X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_env_request.c;h=6d1fc583c6a6da84b86a564542bd94278920f9a4;hp=6e2af5379c9ce415583dc561444484f1bf3ba58d;hb=2e55401943bf7835544aa37e2aeaedfac545a6bb;hpb=7b6175452cb0a9154da31dd571c1425951ec6547 diff --git a/php_http_env_request.c b/php_http_env_request.c index 6e2af53..6d1fc58 100644 --- a/php_http_env_request.c +++ b/php_http_env_request.c @@ -33,15 +33,15 @@ static int grab_file(zval *tmp_name, int argc, va_list argv, zend_hash_key *key) array_init(&entry); - Z_ADDREF_P(tmp_name); + Z_TRY_ADDREF_P(tmp_name); add_assoc_zval_ex(&entry, ZEND_STRL("file"), tmp_name); - Z_ADDREF_P(zname); + Z_TRY_ADDREF_P(zname); add_assoc_zval_ex(&entry, ZEND_STRL("name"), zname); - Z_ADDREF_P(zsize); + Z_TRY_ADDREF_P(zsize); add_assoc_zval_ex(&entry, ZEND_STRL("size"), zsize); - Z_ADDREF_P(ztype); + Z_TRY_ADDREF_P(ztype); add_assoc_zval_ex(&entry, ZEND_STRL("type"), ztype); - Z_ADDREF_P(zerror); + Z_TRY_ADDREF_P(zerror); add_assoc_zval_ex(&entry, ZEND_STRL("error"), zerror); if (file_key->key && (array = zend_hash_find(Z_ARRVAL_P(zfiles), file_key->key))) { @@ -64,7 +64,7 @@ static int grab_file(zval *tmp_name, int argc, va_list argv, zend_hash_key *key) return ZEND_HASH_APPLY_KEEP; } -static int grab_files(zval *val TSRMLS_DC, int argc, va_list argv, zend_hash_key *key) +static int grab_files(zval *val, int argc, va_list argv, zend_hash_key *key) { zval *zfiles, *name, *tmp_name, *error, *type, *size; @@ -91,18 +91,18 @@ static int grab_files(zval *val TSRMLS_DC, int argc, va_list argv, zend_hash_key return ZEND_HASH_APPLY_STOP; } } else { - zval *tmp; + zval *tmp, entry; - SEPARATE_ZVAL(val); + ZVAL_DUP(&entry, val); if ((tmp = zend_hash_str_find(Z_ARRVAL_P(val), ZEND_STRL("tmp_name")))) { Z_ADDREF_P(tmp); - add_assoc_zval_ex(val, ZEND_STRL("file"), tmp); - zend_hash_str_del(Z_ARRVAL_P(val), ZEND_STRL("tmp_name")); + add_assoc_zval_ex(&entry, ZEND_STRL("file"), tmp); + zend_hash_str_del(Z_ARRVAL(entry), ZEND_STRL("tmp_name")); } if (key->key) { - zend_hash_update(Z_ARRVAL_P(zfiles), key->key, val); + zend_hash_update(Z_ARRVAL_P(zfiles), key->key, &entry); } else { - zend_hash_index_update(Z_ARRVAL_P(zfiles), key->h, val); + zend_hash_index_update(Z_ARRVAL_P(zfiles), key->h, &entry); } } } @@ -164,7 +164,7 @@ static PHP_METHOD(HttpEnvRequest, __construct) zend_fcall_info_cache fcc; \ zval rv, mn, *args = ecalloc(sizeof(zval), ZEND_NUM_ARGS()); \ zval *this_ptr = getThis(); \ - zval *qs = zend_read_property(Z_OBJCE_P(this_ptr), this_ptr, ZEND_STRL(prop), 0); \ + zval qs_tmp, *qs = zend_read_property(Z_OBJCE_P(this_ptr), this_ptr, ZEND_STRL(prop), 0, &qs_tmp); \ \ array_init(&mn); \ Z_TRY_ADDREF_P(qs); \ @@ -191,7 +191,7 @@ static PHP_METHOD(HttpEnvRequest, getForm) if (ZEND_NUM_ARGS()) { call_querystring_get("form"); } else { - zval *zform = zend_read_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("form"), 0); + zval zform_tmp, *zform = zend_read_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("form"), 0, &zform_tmp); RETURN_ZVAL_FAST(zform); } } @@ -207,7 +207,7 @@ static PHP_METHOD(HttpEnvRequest, getQuery) if (ZEND_NUM_ARGS()) { call_querystring_get("query"); } else { - zval *zquery = zend_read_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("query"), 0); + zval zquery_tmp, *zquery = zend_read_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("query"), 0, &zquery_tmp); RETURN_ZVAL_FAST(zquery); } } @@ -223,7 +223,7 @@ static PHP_METHOD(HttpEnvRequest, getCookie) if (ZEND_NUM_ARGS()) { call_querystring_get("cookie"); } else { - zval *zcookie = zend_read_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("cookie"), 0); + zval zcookie_tmp, *zcookie = zend_read_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("cookie"), 0, &zcookie_tmp); RETURN_ZVAL_FAST(zcookie); } } @@ -233,7 +233,7 @@ ZEND_END_ARG_INFO(); static PHP_METHOD(HttpEnvRequest, getFiles) { if (SUCCESS == zend_parse_parameters_none()) { - zval *zfiles = zend_read_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("files"), 0); + zval zfiles_tmp, *zfiles = zend_read_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("files"), 0, &zfiles_tmp); RETURN_ZVAL_FAST(zfiles); } }