]> granicus.if.org Git - php/commitdiff
Change checks that should be always true into ZEND_ASSERT() (some edge cases may...
authorDmitry Stogov <dmitry@zend.com>
Tue, 31 Oct 2017 12:41:51 +0000 (15:41 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 31 Oct 2017 12:41:51 +0000 (15:41 +0300)
Zend/zend_variables.c

index 97a2ea474c66bb689d331b47693e780c5d90587e..1d3d2a66a747dc5154f8647c071d9f3e8af8fcc3 100644 (file)
@@ -34,7 +34,9 @@ ZEND_API void ZEND_FASTCALL _zval_dtor_func(zend_refcounted *p ZEND_FILE_LINE_DC
                case IS_STRING: {
                                zend_string *str = (zend_string*)p;
                                CHECK_ZVAL_STRING_REL(str);
-                               zend_string_free(str);
+                               ZEND_ASSERT(!ZSTR_IS_INTERNED(str));
+                               ZEND_ASSERT(GC_REFCOUNT(str) == 0);
+                               pefree(str, GC_FLAGS(str) & IS_STR_PERSISTENT);
                                break;
                        }
                case IS_ARRAY: {