summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-07-04 19:22:24 +0300
committerDmitry Stogov <dmitry@zend.com>2018-07-04 19:22:24 +0300
commit4a475a4976db92e71949786cdf5990c61514261e (patch)
tree6934c9e00200e6388256656b8fa71c97a1a3a158 /ext
parentd798fd491be77943fb751ad97d85475bf324192c (diff)
downloadphp-git-4a475a4976db92e71949786cdf5990c61514261e.tar.gz
Replace legacy zval_dtor() by zval_ptr_dtor_nogc() or even more specialized destructors.
zval_dtor() doesn't make a lot of sense in PHP-7.* and it's used incorrectly in some places. Its occurances should be replaced by zval_ptr_dtor() or zval_ptr_dtor_nogc(), or even more specialized destructors.
Diffstat (limited to 'ext')
-rw-r--r--ext/date/php_date.c16
-rw-r--r--ext/dom/xpath.c2
-rw-r--r--ext/gmp/gmp.c2
-rw-r--r--ext/iconv/iconv.c2
-rw-r--r--ext/imap/php_imap.c8
-rw-r--r--ext/interbase/php_ibase_udf.c2
-rw-r--r--ext/intl/collator/collator_convert.c4
-rw-r--r--ext/intl/converter/converter.c4
-rw-r--r--ext/intl/locale/locale_methods.c2
-rw-r--r--ext/intl/timezone/timezone_class.cpp14
-rw-r--r--ext/intl/transliterator/transliterator_class.c2
-rw-r--r--ext/intl/transliterator/transliterator_methods.c2
-rw-r--r--ext/ldap/ldap.c2
-rw-r--r--ext/mbstring/php_mbregex.c4
-rw-r--r--ext/mysqli/mysqli.c4
-rw-r--r--ext/mysqlnd/mysqlnd_result.c4
-rw-r--r--ext/openssl/openssl.c6
-rw-r--r--ext/pdo/pdo_stmt.c2
-rw-r--r--ext/pgsql/pgsql.c14
-rw-r--r--ext/phar/phar_object.c4
-rw-r--r--ext/posix/posix.c10
-rw-r--r--ext/reflection/php_reflection.c8
-rw-r--r--ext/session/session.c4
-rw-r--r--ext/simplexml/simplexml.c16
-rw-r--r--ext/sockets/conversions.c4
-rw-r--r--ext/standard/basic_functions.c10
-rw-r--r--ext/standard/dir.c2
-rw-r--r--ext/standard/dns.c8
-rw-r--r--ext/standard/dns_win32.c2
-rw-r--r--ext/standard/file.c2
-rw-r--r--ext/standard/pack.c10
-rw-r--r--ext/standard/var.c2
-rw-r--r--ext/tokenizer/tokenizer.c6
-rw-r--r--ext/wddx/wddx.c4
-rw-r--r--ext/xmlreader/php_xmlreader.c6
-rw-r--r--ext/zip/php_zip.c10
36 files changed, 100 insertions, 104 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index 174216ea50..6f7f138f8e 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -2064,7 +2064,7 @@ static int date_interval_has_property(zval *object, zval *member, int type, void
if (!obj->initialized) {
retval = zend_std_has_property(object, member, type, cache_slot);
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
return retval;
}
@@ -2084,7 +2084,7 @@ static int date_interval_has_property(zval *object, zval *member, int type, void
}
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
return retval;
@@ -4159,7 +4159,7 @@ zval *date_interval_read_property(zval *object, zval *member, int type, void **c
if (!obj->initialized) {
retval = zend_std_read_property(object, member, type, cache_slot, rv);
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
return retval;
}
@@ -4186,7 +4186,7 @@ zval *date_interval_read_property(zval *object, zval *member, int type, void **c
retval = zend_std_read_property(object, member, type, cache_slot, rv);
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
return retval;
@@ -4203,7 +4203,7 @@ zval *date_interval_read_property(zval *object, zval *member, int type, void **c
}
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
return retval;
@@ -4227,7 +4227,7 @@ void date_interval_write_property(zval *object, zval *member, zval *value, void
if (!obj->initialized) {
zend_std_write_property(object, member, value, cache_slot);
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
return;
}
@@ -4255,7 +4255,7 @@ void date_interval_write_property(zval *object, zval *member, zval *value, void
} while(0);
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
}
/* }}} */
@@ -4287,7 +4287,7 @@ static zval *date_interval_get_property_ptr_ptr(zval *object, zval *member, int
}
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
return ret;
diff --git a/ext/dom/xpath.c b/ext/dom/xpath.c
index a63abaf6cd..d6c410b17d 100644
--- a/ext/dom/xpath.c
+++ b/ext/dom/xpath.c
@@ -227,7 +227,7 @@ static void dom_xpath_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs,
}
}
zend_string_release_ex(callable, 0);
- zval_dtor(&fci.function_name);
+ zval_ptr_dtor_str(&fci.function_name);
if (fci.param_count > 0) {
for (i = 0; i < nargs - 1; i++) {
zval_ptr_dtor(&fci.params[i]);
diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c
index b3cc77e750..93c69d3347 100644
--- a/ext/gmp/gmp.c
+++ b/ext/gmp/gmp.c
@@ -577,7 +577,7 @@ static int gmp_serialize(zval *object, unsigned char **buffer, size_t *buf_len,
gmp_strval(&zv, gmpnum, 10);
php_var_serialize(&buf, &zv, &serialize_data);
- zval_dtor(&zv);
+ zval_ptr_dtor_str(&zv);
ZVAL_ARR(&zv, zend_std_get_properties(object));
php_var_serialize(&buf, &zv, &serialize_data);
diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c
index 7070454433..bdd4a26da5 100644
--- a/ext/iconv/iconv.c
+++ b/ext/iconv/iconv.c
@@ -2435,7 +2435,7 @@ PHP_FUNCTION(iconv_mime_decode_headers)
if (err != PHP_ICONV_ERR_SUCCESS) {
_php_iconv_show_error(err, charset, "???");
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETVAL_FALSE;
}
}
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c
index d5f07a3e22..86b0011f09 100644
--- a/ext/imap/php_imap.c
+++ b/ext/imap/php_imap.c
@@ -1436,7 +1436,7 @@ PHP_FUNCTION(imap_get_quota)
mail_parameters(NIL, SET_QUOTA, (void *) mail_getquota);
if (!imap_getquota(imap_le_struct->imap_stream, ZSTR_VAL(qroot))) {
php_error_docref(NULL, E_WARNING, "c-client imap_getquota failed");
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
}
@@ -1465,7 +1465,7 @@ PHP_FUNCTION(imap_get_quotaroot)
mail_parameters(NIL, SET_QUOTA, (void *) mail_getquota);
if (!imap_getquotaroot(imap_le_struct->imap_stream, ZSTR_VAL(mbox))) {
php_error_docref(NULL, E_WARNING, "c-client imap_getquotaroot failed");
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
}
@@ -1542,7 +1542,7 @@ PHP_FUNCTION(imap_getacl)
mail_parameters(NIL, SET_ACL, (void *) mail_getacl);
if (!imap_getacl(imap_le_struct->imap_stream, ZSTR_VAL(mailbox))) {
php_error(E_WARNING, "c-client imap_getacl failed");
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
@@ -4290,7 +4290,7 @@ PHP_FUNCTION(imap_mime_header_decode)
}
if (decode == NULL) {
efree(charset);
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
object_init(&myobject);
diff --git a/ext/interbase/php_ibase_udf.c b/ext/interbase/php_ibase_udf.c
index f7dfe2db15..b8bb6034bb 100644
--- a/ext/interbase/php_ibase_udf.c
+++ b/ext/interbase/php_ibase_udf.c
@@ -302,7 +302,7 @@ static void call_php(char *name, PARAMDSC *r, int argc, PARAMDSC **argv)
}
}
- zval_dtor(&callback);
+ zval_ptr_dtor_str(&callback);
/* return whatever type we got back from the callback: let DB handle conversion */
switch (Z_TYPE(return_value)) {
diff --git a/ext/intl/collator/collator_convert.c b/ext/intl/collator/collator_convert.c
index 63132b1eb0..6ec24afe10 100644
--- a/ext/intl/collator/collator_convert.c
+++ b/ext/intl/collator/collator_convert.c
@@ -275,7 +275,7 @@ zval* collator_convert_object_to_string( zval* obj, zval *rv )
php_error( E_WARNING, "Error casting object to string in collator_convert_object_to_string()" );
/* Cleanup zstr to hold utf16 string. */
- zval_dtor( zstr );
+ zval_ptr_dtor_str( zstr );
/* Set string. */
ZVAL_STRINGL( zstr, (char*)ustr, UBYTES(ustr_len));
@@ -392,7 +392,7 @@ zval* collator_make_printable_zval( zval* arg, zval *rv)
if( use_copy )
{
str = collator_convert_zstr_utf8_to_utf16( &arg_copy, rv );
- zval_dtor( &arg_copy );
+ zval_ptr_dtor_str( &arg_copy );
}
else
{
diff --git a/ext/intl/converter/converter.c b/ext/intl/converter/converter.c
index 7d012b86bb..079f69e993 100644
--- a/ext/intl/converter/converter.c
+++ b/ext/intl/converter/converter.c
@@ -931,7 +931,7 @@ static PHP_METHOD(UConverter, getAliases) {
alias = ucnv_getAlias(name, i, &error);
if (U_FAILURE(error)) {
THROW_UFAILURE(NULL, "ucnv_getAlias", error);
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_NULL();
}
add_next_index_string(return_value, alias);
@@ -959,7 +959,7 @@ static PHP_METHOD(UConverter, getStandards) {
const char *name = ucnv_getStandard(i, &error);
if (U_FAILURE(error)) {
THROW_UFAILURE(NULL, "ucnv_getStandard", error);
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_NULL();
}
add_next_index_string(return_value, name);
diff --git a/ext/intl/locale/locale_methods.c b/ext/intl/locale/locale_methods.c
index 437b9e404d..35bec40a7a 100644
--- a/ext/intl/locale/locale_methods.c
+++ b/ext/intl/locale/locale_methods.c
@@ -744,7 +744,7 @@ PHP_FUNCTION( locale_get_keywords )
if( kw_value_str){
zend_string_efree( kw_value_str );
}
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
diff --git a/ext/intl/timezone/timezone_class.cpp b/ext/intl/timezone/timezone_class.cpp
index 929797a96e..1f20ea9b52 100644
--- a/ext/intl/timezone/timezone_class.cpp
+++ b/ext/intl/timezone/timezone_class.cpp
@@ -154,7 +154,7 @@ U_CFUNC TimeZone *timezone_process_timezone_argument(zval *zv_timezone,
intl_errors_set(outside_error, U_ILLEGAL_ARGUMENT_ERROR, message, 1);
efree(message);
}
- zval_dtor(&local_zv_tz);
+ zval_ptr_dtor_str(&local_zv_tz);
return NULL;
}
timeZone = to->utimezone->clone();
@@ -164,7 +164,7 @@ U_CFUNC TimeZone *timezone_process_timezone_argument(zval *zv_timezone,
intl_errors_set(outside_error, U_MEMORY_ALLOCATION_ERROR, message, 1);
efree(message);
}
- zval_dtor(&local_zv_tz);
+ zval_ptr_dtor_str(&local_zv_tz);
return NULL;
}
} else if (Z_TYPE_P(zv_timezone) == IS_OBJECT &&
@@ -172,7 +172,7 @@ U_CFUNC TimeZone *timezone_process_timezone_argument(zval *zv_timezone,
php_timezone_obj *tzobj = Z_PHPTIMEZONE_P(zv_timezone);
- zval_dtor(&local_zv_tz);
+ zval_ptr_dtor_str(&local_zv_tz);
return timezone_convert_datetimezone(tzobj->type, tzobj, 0,
outside_error, func);
} else {
@@ -188,7 +188,7 @@ U_CFUNC TimeZone *timezone_process_timezone_argument(zval *zv_timezone,
intl_errors_set(outside_error, status, message, 1);
efree(message);
}
- zval_dtor(&local_zv_tz);
+ zval_ptr_dtor_str(&local_zv_tz);
return NULL;
}
timeZone = TimeZone::createTimeZone(id);
@@ -198,7 +198,7 @@ U_CFUNC TimeZone *timezone_process_timezone_argument(zval *zv_timezone,
intl_errors_set(outside_error, U_MEMORY_ALLOCATION_ERROR, message, 1);
efree(message);
}
- zval_dtor(&local_zv_tz);
+ zval_ptr_dtor_str(&local_zv_tz);
return NULL;
}
if (timeZone->getID(gottenId) != id) {
@@ -208,13 +208,13 @@ U_CFUNC TimeZone *timezone_process_timezone_argument(zval *zv_timezone,
intl_errors_set(outside_error, U_ILLEGAL_ARGUMENT_ERROR, message, 1);
efree(message);
}
- zval_dtor(&local_zv_tz);
+ zval_ptr_dtor_str(&local_zv_tz);
delete timeZone;
return NULL;
}
}
- zval_dtor(&local_zv_tz);
+ zval_ptr_dtor_str(&local_zv_tz);
return timeZone;
}
diff --git a/ext/intl/transliterator/transliterator_class.c b/ext/intl/transliterator/transliterator_class.c
index 24de8f6544..3c58b43324 100644
--- a/ext/intl/transliterator/transliterator_class.c
+++ b/ext/intl/transliterator/transliterator_class.c
@@ -202,7 +202,7 @@ err:
#define TRANSLITERATOR_PROPERTY_HANDLER_EPILOG \
if( member == &tmp_member ) \
{ \
- zval_dtor( &tmp_member ); \
+ zval_ptr_dtor_str( &tmp_member ); \
}
/* {{{ get_property_ptr_ptr handler */
diff --git a/ext/intl/transliterator/transliterator_methods.c b/ext/intl/transliterator/transliterator_methods.c
index f0e5dcd2e8..6267b383ae 100644
--- a/ext/intl/transliterator/transliterator_methods.c
+++ b/ext/intl/transliterator/transliterator_methods.c
@@ -281,7 +281,7 @@ PHP_FUNCTION( transliterator_list_ids )
intl_error_set_code( NULL, status );
if( U_FAILURE( status ) )
{
- zval_dtor( return_value );
+ zend_array_destroy( Z_ARR_P(return_value) );
RETVAL_FALSE;
intl_error_set_custom_msg( NULL, "transliterator_list_ids: "
"Failed to build array of registered transliterators", 0 );
diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c
index 30923b3350..f81f2b65e4 100644
--- a/ext/ldap/ldap.c
+++ b/ext/ldap/ldap.c
@@ -1814,7 +1814,7 @@ PHP_FUNCTION(ldap_get_entries)
ldap_result_entry = ldap_first_entry(ldap, ldap_result);
if (ldap_result_entry == NULL) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c
index 4d3e44f1ec..608cdc9d8f 100644
--- a/ext/mbstring/php_mbregex.c
+++ b/ext/mbstring/php_mbregex.c
@@ -986,7 +986,7 @@ static void _php_mb_regex_ereg_replace_exec(INTERNAL_FUNCTION_PARAMETERS, OnigOp
smart_str_appendl(&out_buf, Z_STRVAL(v), Z_STRLEN(v));
/* Clean up */
smart_str_free(&eval_buf);
- zval_dtor(&v);
+ zval_ptr_dtor_str(&v);
} else if (is_callable) {
zval args[1];
zval subpats, retval;
@@ -1146,7 +1146,7 @@ PHP_FUNCTION(mb_split)
OnigUChar err_str[ONIG_MAX_ERROR_MESSAGE_LEN];
onig_error_code_to_str(err_str, err);
php_error_docref(NULL, E_WARNING, "mbregex search failure in mbsplit(): %s", err_str);
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index c885be61c0..06a170b306 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -325,7 +325,7 @@ zval *mysqli_read_property(zval *object, zval *member, int type, void **cache_sl
}
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
return retval;
@@ -357,7 +357,7 @@ void mysqli_write_property(zval *object, zval *member, zval *value, void **cache
}
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
}
/* }}} */
diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c
index b436f23ac0..e3eac9dfe1 100644
--- a/ext/mysqlnd/mysqlnd_result.c
+++ b/ext/mysqlnd/mysqlnd_result.c
@@ -1715,10 +1715,10 @@ MYSQLND_METHOD(mysqlnd_res, fetch_into)(MYSQLND_RES * result, const unsigned int
array_init_size(return_value, mysqlnd_num_fields(result) * 2);
if (FAIL == result->m.fetch_row(result, (void *)return_value, flags, &fetched_anything)) {
php_error_docref(NULL, E_WARNING, "Error while reading a row");
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETVAL_FALSE;
} else if (fetched_anything == FALSE) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
switch (extension) {
case MYSQLND_MYSQLI:
RETVAL_NULL();
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index 4aae81dbd7..ca7e512efd 100644
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -3730,7 +3730,7 @@ static EVP_PKEY * php_openssl_evp_from_zval(
#define TMP_CLEAN \
if (Z_TYPE(tmp) == IS_STRING) {\
- zval_dtor(&tmp); \
+ zval_ptr_dtor_str(&tmp); \
} \
return NULL;
@@ -3796,7 +3796,7 @@ static EVP_PKEY * php_openssl_evp_from_zval(
TMP_CLEAN;
} else {
if (Z_TYPE(tmp) == IS_STRING) {
- zval_dtor(&tmp);
+ zval_ptr_dtor_str(&tmp);
}
/* got the key - return it */
return (EVP_PKEY*)what;
@@ -3885,7 +3885,7 @@ static EVP_PKEY * php_openssl_evp_from_zval(
*resourceval = zend_register_resource(key, le_key);
}
if (Z_TYPE(tmp) == IS_STRING) {
- zval_dtor(&tmp);
+ zval_ptr_dtor_str(&tmp);
}
return key;
}
diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c
index fbd2b12de4..b4f08a87a3 100644
--- a/ext/pdo/pdo_stmt.c
+++ b/ext/pdo/pdo_stmt.c
@@ -915,7 +915,7 @@ static int do_fetch(pdo_stmt_t *stmt, int do_bind, zval *return_value, enum pdo_
}
do_fetch_class_prepare(stmt);
- zval_dtor(&val);
+ zval_ptr_dtor_str(&val);
}
ce = stmt->fetch.cls.ce;
if (!ce) {
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c
index a979ab5182..a75abf965c 100644
--- a/ext/pgsql/pgsql.c
+++ b/ext/pgsql/pgsql.c
@@ -2911,7 +2911,7 @@ PHP_FUNCTION(pg_fetch_all)
pgsql_result = pg_result->result;
array_init(return_value);
if (php_pgsql_result2array(pgsql_result, return_value, result_type) == FAILURE) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
}
@@ -4278,12 +4278,12 @@ PHP_FUNCTION(pg_copy_from)
}
if (PQputCopyData(pgsql, query, (int)strlen(query)) != 1) {
efree(query);
- zval_dtor(&tmp);
+ zval_ptr_dtor_str(&tmp);
PHP_PQ_ERROR("copy failed: %s", pgsql);
RETURN_FALSE;
}
efree(query);
- zval_dtor(&tmp);
+ zval_ptr_dtor_str(&tmp);
} ZEND_HASH_FOREACH_END();
if (PQputCopyEnd(pgsql, NULL) != 1) {
@@ -4302,12 +4302,12 @@ PHP_FUNCTION(pg_copy_from)
}
if (PQputline(pgsql, query)==EOF) {
efree(query);
- zval_dtor(&tmp);
+ zval_ptr_dtor_str(&tmp);
PHP_PQ_ERROR("copy failed: %s", pgsql);
RETURN_FALSE;
}
efree(query);
- zval_dtor(&tmp);
+ zval_ptr_dtor_str(&tmp);
} ZEND_HASH_FOREACH_END();
if (PQputline(pgsql, "\\.\n") == EOF) {
@@ -5636,7 +5636,7 @@ PHP_FUNCTION(pg_meta_data)
array_init(return_value);
if (php_pgsql_meta_data(pgsql, table_name, return_value, extended) == FAILURE) {
- zval_dtor(return_value); /* destroy array */
+ zend_array_destroy(Z_ARR_P(return_value)); /* destroy array */
RETURN_FALSE;
}
}
@@ -6520,7 +6520,7 @@ PHP_FUNCTION(pg_convert)
}
array_init(return_value);
if (php_pgsql_convert(pg_link, table_name, values, return_value, option) == FAILURE) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
}
diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c
index 5f866c6b2a..f2fd426241 100644
--- a/ext/phar/phar_object.c
+++ b/ext/phar/phar_object.c
@@ -1448,7 +1448,7 @@ static int phar_build(zend_object_iterator *iter, void *puser) /* {{{ */
str_key = estrndup(Z_STRVAL(key), str_key_len);
save = str_key;
- zval_dtor(&key);
+ zval_ptr_dtor_str(&key);
} else {
zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0, "Iterator %s returned an invalid key (must return a string)", ZSTR_VAL(ce->name));
return ZEND_HASH_APPLY_STOP;
@@ -1576,7 +1576,7 @@ phar_spl_fileinfo:
str_key = estrndup(Z_STRVAL(key), str_key_len);
save = str_key;
- zval_dtor(&key);
+ zval_ptr_dtor_str(&key);
} else {
zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0, "Iterator %s returned an invalid key (must return a string)", ZSTR_VAL(ce->name));
return ZEND_HASH_APPLY_STOP;
diff --git a/ext/posix/posix.c b/ext/posix/posix.c
index e7fdc1bf3b..0d8edde4e2 100644
--- a/ext/posix/posix.c
+++ b/ext/posix/posix.c
@@ -1097,7 +1097,7 @@ PHP_FUNCTION(posix_getgrnam)
array_init(return_value);
if (!php_posix_group_to_array(g, return_value)) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
php_error_docref(NULL, E_WARNING, "unable to convert posix group to array");
RETVAL_FALSE;
}
@@ -1150,7 +1150,7 @@ PHP_FUNCTION(posix_getgrgid)
array_init(return_value);
if (!php_posix_group_to_array(g, return_value)) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
php_error_docref(NULL, E_WARNING, "unable to convert posix group struct to array");
RETVAL_FALSE;
}
@@ -1217,7 +1217,7 @@ PHP_FUNCTION(posix_getpwnam)
array_init(return_value);
if (!php_posix_passwd_to_array(pw, return_value)) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
php_error_docref(NULL, E_WARNING, "unable to convert posix passwd struct to array");
RETVAL_FALSE;
}
@@ -1268,7 +1268,7 @@ PHP_FUNCTION(posix_getpwuid)
array_init(return_value);
if (!php_posix_passwd_to_array(pw, return_value)) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
php_error_docref(NULL, E_WARNING, "unable to convert posix passwd struct to array");
RETVAL_FALSE;
}
@@ -1387,7 +1387,7 @@ PHP_FUNCTION(posix_getrlimit)
for (l=limits; l->name; l++) {
if (posix_addlimit(l->limit, l->name, return_value) == FAILURE) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
}
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 03590d47e7..a793536d8d 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -1452,7 +1452,7 @@ ZEND_METHOD(reflection, export)
/* Invoke the __toString() method */
ZVAL_STRINGL(&fname, "__tostring", sizeof("__tostring") - 1);
result= call_user_function(NULL, object, &fname, &retval, 0, NULL);
- zval_dtor(&fname);
+ zval_ptr_dtor_str(&fname);
if (result == FAILURE) {
_DO_THROW("Invocation of method __toString() failed");
@@ -2976,7 +2976,7 @@ ZEND_METHOD(reflection_method, __construct)
zend_throw_exception_ex(reflection_exception_ptr, 0,
"Class %s does not exist", Z_STRVAL_P(classname));
if (classname == &ztmp) {
- zval_dtor(&ztmp);
+ zval_ptr_dtor_str(&ztmp);
}
return;
}
@@ -2988,14 +2988,14 @@ ZEND_METHOD(reflection_method, __construct)
default:
if (classname == &ztmp) {
- zval_dtor(&ztmp);
+ zval_ptr_dtor_str(&ztmp);
}
_DO_THROW("The parameter class is expected to be either a string or an object");
/* returns out of this function */
}
if (classname == &ztmp) {
- zval_dtor(&ztmp);
+ zval_ptr_dtor_str(&ztmp);
}
lcname = zend_str_tolower_dup(name_str, name_len);
diff --git a/ext/session/session.c b/ext/session/session.c
index b8a895c504..609542d51c 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -1814,7 +1814,7 @@ static PHP_FUNCTION(session_module_name)
if (!_php_find_ps_module(ZSTR_VAL(name))) {
php_error_docref(NULL, E_WARNING, "Cannot find named PHP session module (%s)", ZSTR_VAL(name));
- zval_dtor(return_value);
+ zval_ptr_dtor_str(return_value);
RETURN_FALSE;
}
if (PS(mod_data) || PS(mod_user_implemented)) {
@@ -2019,7 +2019,7 @@ static PHP_FUNCTION(session_save_path)
if (name) {
if (memchr(ZSTR_VAL(name), '\0', ZSTR_LEN(name)) != NULL) {
php_error_docref(NULL, E_WARNING, "The save_path cannot contain NULL characters");
- zval_dtor(return_value);
+ zval_ptr_dtor_str(return_value);
RETURN_FALSE;
}
ini_name = zend_string_init("session.save_path", sizeof("session.save_path") - 1, 0);
diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c
index 01eadf98d0..4ff82631e7 100644
--- a/ext/simplexml/simplexml.c
+++ b/ext/simplexml/simplexml.c
@@ -352,7 +352,7 @@ long_dim:
}
if (member == &tmp_zv) {
- zval_dtor(&tmp_zv);
+ zval_ptr_dtor_str(&tmp_zv);
}
if (Z_ISUNDEF_P(rv)) {
@@ -383,7 +383,6 @@ static zval *sxe_dimension_read(zval *object, zval *offset, int type, zval *rv)
*/
static void change_node_zval(xmlNodePtr node, zval *value)
{
- zval value_copy;
xmlChar *buffer;
int buffer_len;
@@ -408,9 +407,6 @@ static void change_node_zval(xmlNodePtr node, zval *value)
xmlNodeSetContentLen(node, buffer, buffer_len);
xmlFree(buffer);
}
- if (value == &value_copy) {
- zval_dtor(value);
- }
break;
default:
php_error_docref(NULL, E_WARNING, "It is not possible to assign complex types to nodes");
@@ -470,7 +466,7 @@ long_dim:
if (!Z_STRLEN_P(member)) {
php_error_docref(NULL, E_WARNING, "Cannot write or create unnamed %s", attribs ? "attribute" : "element");
if (member == &tmp_zv) {
- zval_dtor(&tmp_zv);
+ zval_ptr_dtor_str(&tmp_zv);
}
return FAILURE;
}
@@ -531,7 +527,7 @@ long_dim:
/* break is missing intentionally */
default:
if (member == &tmp_zv) {
- zval_dtor(&tmp_zv);
+ zval_ptr_dtor_str(&tmp_zv);
}
zend_error(E_WARNING, "It is not yet possible to assign complex types to %s", attribs ? "attributes" : "properties");
return FAILURE;
@@ -643,7 +639,7 @@ next_iter:
}
if (member == &tmp_zv) {
- zval_dtor(&tmp_zv);
+ zval_ptr_dtor_str(&tmp_zv);
}
if (pnewnode) {
*pnewnode = newnode;
@@ -801,7 +797,7 @@ static int sxe_prop_dim_exists(zval *object, zval *member, int check_empty, zend
}
if (member == &tmp_zv) {
- zval_dtor(&tmp_zv);
+ zval_ptr_dtor_str(&tmp_zv);
}
return exists;
@@ -926,7 +922,7 @@ next_iter:
}
if (member == &tmp_zv) {
- zval_dtor(&tmp_zv);
+ zval_ptr_dtor_str(&tmp_zv);
}
}
/* }}} */
diff --git a/ext/sockets/conversions.c b/ext/sockets/conversions.c
index 291aeb2981..feb97356c9 100644
--- a/ext/sockets/conversions.c
+++ b/ext/sockets/conversions.c
@@ -336,12 +336,12 @@ double_case:
switch (is_numeric_string(Z_STRVAL(lzval), Z_STRLEN(lzval), &lval, &dval, 0)) {
case IS_DOUBLE:
- zval_dtor(&lzval);
+ zval_ptr_dtor_str(&lzval);
ZVAL_DOUBLE(&lzval, dval);
goto double_case;
case IS_LONG:
- zval_dtor(&lzval);
+ zval_ptr_dtor_str(&lzval);
ZVAL_LONG(&lzval, lval);
goto long_case;
}
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index 578c52d3e9..6af26434b8 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -5530,7 +5530,7 @@ PHP_FUNCTION(ini_set)
_CHECK_PATH(ZSTR_VAL(varname), ZSTR_LEN(varname), "java.library.path") ||
_CHECK_PATH(ZSTR_VAL(varname), ZSTR_LEN(varname), "vpopmail.directory")) {
if (php_check_open_basedir(ZSTR_VAL(new_value))) {
- zval_dtor(return_value);
+ zval_ptr_dtor_str(return_value);
RETURN_FALSE;
}
}
@@ -5538,7 +5538,7 @@ PHP_FUNCTION(ini_set)
#undef _CHECK_PATH
if (zend_alter_ini_entry_ex(varname, new_value, PHP_INI_USER, PHP_INI_STAGE_RUNTIME, 0) == FAILURE) {
- zval_dtor(return_value);
+ zval_ptr_dtor_str(return_value);
RETURN_FALSE;
}
}
@@ -5581,7 +5581,7 @@ PHP_FUNCTION(set_include_path)
key = zend_string_init("include_path", sizeof("include_path") - 1, 0);
if (zend_alter_ini_entry_ex(key, new_value, PHP_INI_USER, PHP_INI_STAGE_RUNTIME, 0) == FAILURE) {
zend_string_release_ex(key, 0);
- zval_dtor(return_value);
+ zval_ptr_dtor_str(return_value);
RETURN_FALSE;
}
zend_string_release_ex(key, 0);
@@ -6076,7 +6076,7 @@ PHP_FUNCTION(parse_ini_file)
array_init(return_value);
if (zend_parse_ini_file(&fh, 0, (int)scanner_mode, ini_parser_cb, return_value) == FAILURE) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
}
@@ -6118,7 +6118,7 @@ PHP_FUNCTION(parse_ini_string)
array_init(return_value);
if (zend_parse_ini_string(string, 0, (int)scanner_mode, ini_parser_cb, return_value) == FAILURE) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETVAL_FALSE;
}
efree(string);
diff --git a/ext/standard/dir.c b/ext/standard/dir.c
index f93fb0dbb5..b170d1a7b4 100644
--- a/ext/standard/dir.c
+++ b/ext/standard/dir.c
@@ -545,7 +545,7 @@ no_results:
globfree(&globbuf);
if (basedir_limit && !zend_hash_num_elements(Z_ARRVAL_P(return_value))) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
}
diff --git a/ext/standard/dns.c b/ext/standard/dns.c
index 614bc32119..a3bbb6d91c 100644
--- a/ext/standard/dns.c
+++ b/ext/standard/dns.c
@@ -921,13 +921,13 @@ PHP_FUNCTION(dns_get_record)
#if defined(HAVE_DNS_SEARCH)
handle = dns_open(NULL);
if (handle == NULL) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
#elif defined(HAVE_RES_NSEARCH)
memset(&state, 0, sizeof(state));
if (res_ninit(handle)) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
#else
@@ -954,7 +954,7 @@ PHP_FUNCTION(dns_get_record)
default:
php_error_docref(NULL, E_WARNING, "DNS Query failed");
}
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
@@ -971,7 +971,7 @@ PHP_FUNCTION(dns_get_record)
n = dn_skipname(cp, end);
if (n < 0) {
php_error_docref(NULL, E_WARNING, "Unable to parse DNS data received");
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
php_dns_free_handle(handle);
RETURN_FALSE;
}
diff --git a/ext/standard/dns_win32.c b/ext/standard/dns_win32.c
index 4bca7128a1..41f8d1e159 100644
--- a/ext/standard/dns_win32.c
+++ b/ext/standard/dns_win32.c
@@ -457,7 +457,7 @@ PHP_FUNCTION(dns_get_record)
continue;
} else {
php_error_docref(NULL, E_WARNING, "DNS Query failed");
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
}
diff --git a/ext/standard/file.c b/ext/standard/file.c
index 643876acb9..5ed42dd2e5 100644
--- a/ext/standard/file.c
+++ b/ext/standard/file.c
@@ -2190,7 +2190,7 @@ PHPAPI void php_fgetcsv(php_stream *stream, char delimiter, char enclosure, char
if ((size_t)temp_len > (size_t)(limit - buf)) {
goto quit_loop_2;
}
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETVAL_FALSE;
goto out;
}
diff --git a/ext/standard/pack.c b/ext/standard/pack.c
index 846f404af6..e467cf8954 100644
--- a/ext/standard/pack.c
+++ b/ext/standard/pack.c
@@ -850,7 +850,7 @@ PHP_FUNCTION(unpack)
break;
#else
php_error_docref(NULL, E_WARNING, "64-bit format codes are not available for 32-bit versions of PHP");
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
#endif
@@ -870,14 +870,14 @@ PHP_FUNCTION(unpack)
default:
php_error_docref(NULL, E_WARNING, "Invalid format type %c", type);
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
break;
}
if (size != 0 && size != -1 && size < 0) {
php_error_docref(NULL, E_WARNING, "Type %c: integer overflow", type);
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
@@ -896,7 +896,7 @@ PHP_FUNCTION(unpack)
if (size != 0 && size != -1 && INT_MAX - size + 1 < inputpos) {
php_error_docref(NULL, E_WARNING, "Type %c: integer overflow", type);
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
@@ -1192,7 +1192,7 @@ PHP_FUNCTION(unpack)
break;
} else {
php_error_docref(NULL, E_WARNING, "Type %c: not enough input, need %d, have " ZEND_LONG_FMT, type, size, inputlen - inputpos);
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
}
diff --git a/ext/standard/var.c b/ext/standard/var.c
index 14335ba1b4..46d1b2df65 100644
--- a/ext/standard/var.c
+++ b/ext/standard/var.c
@@ -680,7 +680,7 @@ static int php_var_serialize_call_sleep(zval *retval, zval *struc) /* {{{ */
BG(serialize_lock)++;
res = call_user_function(CG(function_table), struc, &fname, retval, 0, 0);
BG(serialize_lock)--;
- zval_dtor(&fname);
+ zval_ptr_dtor_str(&fname);
if (res == FAILURE || Z_ISUNDEF_P(retval)) {
zval_ptr_dtor(retval);
diff --git a/ext/tokenizer/tokenizer.c b/ext/tokenizer/tokenizer.c
index 60df344395..dae79c0173 100644
--- a/ext/tokenizer/tokenizer.c
+++ b/ext/tokenizer/tokenizer.c
@@ -148,7 +148,7 @@ static zend_bool tokenize(zval *return_value, zend_string *source)
add_token(return_value, token_type, zendtext, zendleng, token_line);
if (Z_TYPE(token) != IS_UNDEF) {
- zval_dtor(&token);
+ zval_ptr_dtor_nogc(&token);
ZVAL_UNDEF(&token);
}
@@ -177,7 +177,7 @@ static zend_bool tokenize(zval *return_value, zend_string *source)
token_line = CG(zend_lineno);
}
- zval_dtor(&source_zval);
+ zval_ptr_dtor_str(&source_zval);
zend_restore_lexical_state(&original_lex_state);
return 1;
@@ -255,7 +255,7 @@ static zend_bool tokenize_parse(zval *return_value, zend_string *source)
zend_restore_lexical_state(&original_lex_state);
CG(in_compilation) = original_in_compilation;
- zval_dtor(&source_zval);
+ zval_ptr_dtor_str(&source_zval);
return success;
}
diff --git a/ext/wddx/wddx.c b/ext/wddx/wddx.c
index 6dde04f4e5..a7596a5f27 100644
--- a/ext/wddx/wddx.c
+++ b/ext/wddx/wddx.c
@@ -305,7 +305,7 @@ PS_SERIALIZER_DECODE_FUNC(wddx)
ZVAL_UNDEF(&retval);
if ((ret = php_wddx_deserialize_ex(val, vallen, &retval)) == SUCCESS) {
if (Z_TYPE(retval) != IS_ARRAY) {
- zval_dtor(&retval);
+ zval_ptr_dtor_nogc(&retval);
return FAILURE;
}
ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL(retval), idx, key, ent) {
@@ -1065,7 +1065,7 @@ static void php_wddx_process_data(void *user_data, const XML_Char *s, int len)
memcpy(ZSTR_VAL(str), Z_STRVAL(ent->data), Z_STRLEN(ent->data));
memcpy(ZSTR_VAL(str) + Z_STRLEN(ent->data), s, len);
ZSTR_VAL(str)[ZSTR_LEN(str)] = '\0';
- zval_dtor(&ent->data);
+ zval_ptr_dtor_str(&ent->data);
} else {
str = zend_string_init((char *)s, len, 0);
}
diff --git a/ext/xmlreader/php_xmlreader.c b/ext/xmlreader/php_xmlreader.c
index 0b84a702b8..38343e514b 100644
--- a/ext/xmlreader/php_xmlreader.c
+++ b/ext/xmlreader/php_xmlreader.c
@@ -139,7 +139,7 @@ zval *xmlreader_get_property_ptr_ptr(zval *object, zval *member, int type, void
}
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
return retval;
@@ -176,7 +176,7 @@ zval *xmlreader_read_property(zval *object, zval *member, int type, void **cache
}
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
return retval;
}
@@ -206,7 +206,7 @@ void xmlreader_write_property(zval *object, zval *member, zval *value, void **ca
}
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
}
/* }}} */
diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c
index d355ca3425..24dd0020d6 100644
--- a/ext/zip/php_zip.c
+++ b/ext/zip/php_zip.c
@@ -896,7 +896,7 @@ static zval *php_zip_get_property_ptr_ptr(zval *object, zval *member, int type,
}
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
return retval;
@@ -932,7 +932,7 @@ static zval *php_zip_read_property(zval *object, zval *member, int type, void **
}
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
return retval;
@@ -977,7 +977,7 @@ static int php_zip_has_property(zval *object, zval *member, int type, void **cac
}
if (member == &tmp_member) {
- zval_dtor(member);
+ zval_ptr_dtor_str(&tmp_member);
}
return retval;
@@ -1743,7 +1743,7 @@ static void php_zip_add_from_pattern(INTERNAL_FUNCTION_PARAMETERS, int type) /*
if ((add_path_len + file_stripped_len) > MAXPATHLEN) {
php_error_docref(NULL, E_WARNING, "Entry name too long (max: %d, %zd given)",
MAXPATHLEN - 1, (add_path_len + file_stripped_len));
- zval_ptr_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
snprintf(entry_name_buf, MAXPATHLEN, "%s%s", add_path, file_stripped);
@@ -1760,7 +1760,7 @@ static void php_zip_add_from_pattern(INTERNAL_FUNCTION_PARAMETERS, int type) /*
if (php_zip_add_file(intern, Z_STRVAL_P(zval_file), Z_STRLEN_P(zval_file),
entry_name, entry_name_len, 0, 0) < 0) {
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
}