diff options
author | Anatol Belski <ab@php.net> | 2018-04-12 18:25:27 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2018-04-12 18:25:27 +0200 |
commit | 5fe6d2134b45818222248b8e20694f407bb52d63 (patch) | |
tree | 55a8d56161be5deeff4d63e4a82cf2bb712d8a67 | |
parent | 9322b43d65b2d5384c86466c4ba97f1a8ee57eaf (diff) | |
download | php-git-5fe6d2134b45818222248b8e20694f407bb52d63.tar.gz |
Fix memory leak
-rw-r--r-- | ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp | 1 | ||||
-rw-r--r-- | ext/intl/tests/rbbiter___construct_basic.phpt | 11 |
2 files changed, 11 insertions, 1 deletions
diff --git a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp index 8ab8194b17..fbc3fe6f5c 100644 --- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp +++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp @@ -79,6 +79,7 @@ static void _php_intlrbbi_constructor_body(INTERNAL_FUNCTION_PARAMETERS) if (U_FAILURE(status)) { intl_error_set(NULL, status, "rbbi_create_instance: unable to " "create instance from compiled rules", 0); + delete rbbi; return; } #else diff --git a/ext/intl/tests/rbbiter___construct_basic.phpt b/ext/intl/tests/rbbiter___construct_basic.phpt index 6fb584fdee..31edcd2c83 100644 --- a/ext/intl/tests/rbbiter___construct_basic.phpt +++ b/ext/intl/tests/rbbiter___construct_basic.phpt @@ -24,8 +24,17 @@ $rules = <<<RULES RULES; $rbbi = new IntlRuleBasedBreakIterator($rules); var_dump(get_class($rbbi)); + +try { + $obj = new IntlRuleBasedBreakIterator('[\p{Letter}\uFFFD]+;[:number:]+', 'aoeu'); +} catch (IntlException $e) { + var_dump(intl_get_error_code(), intl_get_error_message()); +} + ?> ==DONE== --EXPECT-- string(26) "IntlRuleBasedBreakIterator" -==DONE==
\ No newline at end of file +int(1) +string(93) "rbbi_create_instance: unable to create instance from compiled rules: U_ILLEGAL_ARGUMENT_ERROR" +==DONE== |