]> granicus.if.org Git - php/commitdiff
Check assert only when RC_DEBUG is enabled
authorDmitry Stogov <dmitry@zend.com>
Thu, 18 Apr 2019 11:26:15 +0000 (14:26 +0300)
committerDmitry Stogov <dmitry@zend.com>
Thu, 18 Apr 2019 11:26:15 +0000 (14:26 +0300)
Zend/zend_string.c

index 0aa6665c1938954c3438f182d9b0392745eec350..61e5f51b7f2739c3819db958d9b65736d8ffeb5d 100644 (file)
@@ -234,7 +234,13 @@ static zend_string* ZEND_FASTCALL zend_new_interned_string_request(zend_string *
        }
 
        /* Create a short living interned, freed after the request. */
-       ZEND_ASSERT(!(GC_FLAGS(str) & GC_PERSISTENT));
+#if ZEND_RC_DEBUG
+       if (zend_rc_debug) {
+               /* PHP shouldn't create persistent interned string during request,
+                * but at least dl() may do this */
+               ZEND_ASSERT(!(GC_FLAGS(str) & GC_PERSISTENT));
+       }
+#endif
        if (GC_REFCOUNT(str) > 1) {
                zend_ulong h = ZSTR_H(str);
                zend_string_delref(str);
@@ -257,6 +263,7 @@ static zend_string* ZEND_FASTCALL zend_string_init_interned_permanent(const char
                return ret;
        }
 
+       ZEND_ASSERT(permanent);
        ret = zend_string_init(str, size, permanent);
        ZSTR_H(ret) = h;
        return zend_add_interned_string(ret, &interned_strings_permanent, IS_STR_PERMANENT);
@@ -278,6 +285,13 @@ static zend_string* ZEND_FASTCALL zend_string_init_interned_request(const char *
                return ret;
        }
 
+#if ZEND_RC_DEBUG
+       if (zend_rc_debug) {
+               /* PHP shouldn't create persistent interned string during request,
+                * but at least dl() may do this */
+               ZEND_ASSERT(!permanent);
+       }
+#endif
        ret = zend_string_init(str, size, permanent);
        ZSTR_H(ret) = h;