It would be better to switch this to use %union and %type annotations,
but not going to do that change for 7.3.
%left '|' '&' '^'
%right '~' '!'
-%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
+%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 cfg_var_ref constant_literal constant_string encapsed_list expr option_offset section_string_or_value string_or_value var_string_list var_string_list_section
%%
--- /dev/null
+--TEST--
+Ini parsing errors should not result in memory leaks
+--FILE--
+<?php
+var_dump(parse_ini_string('a="b'));
+?>
+--EXPECTF--
+Warning: syntax error, unexpected $end, expecting TC_DOLLAR_CURLY or TC_QUOTED_STRING or '"' in Unknown on line 1
+ in %s on line %d
+bool(false)