summaryrefslogtreecommitdiff
path: root/Zend/zend_ini_parser.y
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-05-28 16:27:12 +0300
committerDmitry Stogov <dmitry@zend.com>2018-05-28 16:27:12 +0300
commit5eb1f92f31cafc48384f9096012f421b37f6d425 (patch)
tree4ed67b92229407e7b5cbab37b96428fe80eb3f94 /Zend/zend_ini_parser.y
parent925f05dd1a35eafa71eb29abb69cdfc31a23a75d (diff)
downloadphp-git-5eb1f92f31cafc48384f9096012f421b37f6d425.tar.gz
Use zend_string_release_ex() instread of zend_string_release() in places, where we sure about string persistence.
Diffstat (limited to 'Zend/zend_ini_parser.y')
-rw-r--r--Zend/zend_ini_parser.y22
1 files changed, 14 insertions, 8 deletions
diff --git a/Zend/zend_ini_parser.y b/Zend/zend_ini_parser.y
index 0da2622000..4a2c457416 100644
--- a/Zend/zend_ini_parser.y
+++ b/Zend/zend_ini_parser.y
@@ -276,6 +276,16 @@ ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int s
}
/* }}} */
+/* {{{ zval_ini_dtor()
+*/
+static int zval_ini_dtor(zval *zv)
+{
+ if (Z_TYPE_P(zv) == IS_STRING) {
+ zend_string_release(Z_STR_P(zv));
+ }
+}
+/* }}} */
+
%}
%expect 0
@@ -300,7 +310,7 @@ ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int s
%left '|' '&' '^'
%right '~' '!'
-%destructor { zval_ptr_dtor(&$$); } TC_RAW TC_CONSTANT TC_NUMBER TC_STRING TC_WHITESPACE TC_LABEL TC_OFFSET TC_VARNAME BOOL_TRUE BOOL_FALSE NULL_NULL
+%destructor { zval_ini_dtor(&$$); } TC_RAW TC_CONSTANT TC_NUMBER TC_STRING TC_WHITESPACE TC_LABEL TC_OFFSET TC_VARNAME BOOL_TRUE BOOL_FALSE NULL_NULL
%%
@@ -323,7 +333,7 @@ statement:
#endif
ZEND_INI_PARSER_CB(&$1, &$3, NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG);
zend_string_release(Z_STR($1));
- zval_ptr_dtor(&$3);
+ zval_ini_dtor(&$3);
}
| TC_OFFSET option_offset ']' '=' string_or_value {
#if DEBUG_CFG_PARSER
@@ -331,12 +341,8 @@ statement:
#endif
ZEND_INI_PARSER_CB(&$1, &$5, &$2, ZEND_INI_PARSER_POP_ENTRY, ZEND_INI_PARSER_ARG);
zend_string_release(Z_STR($1));
- if (Z_TYPE($2) == IS_STRING) {
- zend_string_release(Z_STR($2));
- } else {
- zval_dtor(&$2);
- }
- zval_ptr_dtor(&$5);
+ zval_ini_dtor(&$2);
+ zval_ini_dtor(&$5);
}
| TC_LABEL { ZEND_INI_PARSER_CB(&$1, NULL, NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG); zend_string_release(Z_STR($1)); }
| END_OF_LINE