]> granicus.if.org Git - php/commitdiff
Fixed memory leak
authorDmitry Stogov <dmitry@zend.com>
Tue, 19 Feb 2019 16:21:36 +0000 (19:21 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 19 Feb 2019 16:21:36 +0000 (19:21 +0300)
Zend/zend_language_scanner.l

index 9365e68a800d948e86806ca2fa28b0c07ae689e5..e93431de24f0bfcdac35ec79cd2b52ee24bf81a4 100644 (file)
@@ -2215,10 +2215,16 @@ skip_escape_conversion:
        if (SCNG(output_filter)) {
                size_t sz = 0;
                char *str = NULL;
+               zend_string *new_str;
                s = Z_STRVAL_P(zendlval);
                // TODO: avoid reallocation ???
                SCNG(output_filter)((unsigned char **)&str, &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval));
-               ZVAL_STRINGL(zendlval, str, sz);
+               new_str = zend_string_init(str, sz, 0);
+               if (str != s) {
+                       efree(str);
+               }
+               zend_string_release_ex(Z_STR_P(zendlval), 0);
+               ZVAL_STR(zendlval, new_str);
        }
        RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING);
 }