Merge branch 'PHP-7.1'

* PHP-7.1:
  Fixed #73973 - debug_zval_dump() assertion error for resource consts with --enable-debug
This commit is contained in:
Joe Watkins 2017-01-26 09:04:52 +00:00
commit 306f55bef4
No known key found for this signature in database
GPG key ID: F9BA0ADA31CBD89E
4 changed files with 14 additions and 12 deletions

1
NEWS
View file

@ -25,6 +25,7 @@ PHP NEWS
. Fixed bug #73969 (segfault in debug_print_backtrace). (andrewnester) . Fixed bug #73969 (segfault in debug_print_backtrace). (andrewnester)
. Added PHP_OS_FAMILY constant to determine on which OS we are. (Jan Altensen) . Added PHP_OS_FAMILY constant to determine on which OS we are. (Jan Altensen)
. Fixed bug #73994 (arginfo incorrect for unpack). (krakjoe) . Fixed bug #73994 (arginfo incorrect for unpack). (krakjoe)
. Fixed bug #73973 (assertion error in debug_zval_dump). (andrewnester)
- BCMath: - BCMath:
. Fixed bug #46564 (bcmod truncates fractionals). (liborm85) . Fixed bug #46564 (bcmod truncates fractionals). (liborm85)

View file

@ -879,9 +879,6 @@ static void copy_constant_array(zval *dst, zval *src) /* {{{ */
} }
} else if (Z_REFCOUNTED_P(val)) { } else if (Z_REFCOUNTED_P(val)) {
Z_ADDREF_P(val); Z_ADDREF_P(val);
if (UNEXPECTED(Z_TYPE_INFO_P(val) == IS_RESOURCE_EX)) {
Z_TYPE_INFO_P(new_val) &= ~(IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT);
}
} }
} ZEND_HASH_FOREACH_END(); } ZEND_HASH_FOREACH_END();
} }
@ -924,12 +921,7 @@ repeat:
case IS_FALSE: case IS_FALSE:
case IS_TRUE: case IS_TRUE:
case IS_NULL: case IS_NULL:
break;
case IS_RESOURCE: case IS_RESOURCE:
ZVAL_COPY(&val_free, val);
/* TODO: better solution than this tricky disable dtor on resource? */
Z_TYPE_INFO(val_free) &= ~(IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT);
val = &val_free;
break; break;
case IS_ARRAY: case IS_ARRAY:
if (Z_REFCOUNTED_P(val)) { if (Z_REFCOUNTED_P(val)) {

View file

@ -345,6 +345,10 @@ void shutdown_executor(void) /* {{{ */
zend_llist_destroy(&CG(open_files)); zend_llist_destroy(&CG(open_files));
} zend_end_try(); } zend_end_try();
zend_try {
clean_non_persistent_constants();
} zend_end_try();
zend_try { zend_try {
zend_close_rsrc_list(&EG(regular_list)); zend_close_rsrc_list(&EG(regular_list));
} zend_end_try(); } zend_end_try();
@ -376,10 +380,6 @@ void shutdown_executor(void) /* {{{ */
} }
} zend_end_try(); } zend_end_try();
zend_try {
clean_non_persistent_constants();
} zend_end_try();
zend_try { zend_try {
#if 0&&ZEND_DEBUG #if 0&&ZEND_DEBUG
signal(SIGSEGV, original_sigsegv_handler); signal(SIGSEGV, original_sigsegv_handler);

View file

@ -0,0 +1,9 @@
--TEST--
Bug #73973 debug_zval_dump() assertion error for resource consts with --enable-debug
--FILE--
<?php
define('myerr', fopen('php://stderr', 'w'));
debug_zval_dump(myerr);
?>
--EXPECTF--
resource(5) of type (stream) refcount(%d)