summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2018-04-12 18:25:27 +0200
committerAnatol Belski <ab@php.net>2018-04-12 18:25:27 +0200
commit5fe6d2134b45818222248b8e20694f407bb52d63 (patch)
tree55a8d56161be5deeff4d63e4a82cf2bb712d8a67
parent9322b43d65b2d5384c86466c4ba97f1a8ee57eaf (diff)
downloadphp-git-5fe6d2134b45818222248b8e20694f407bb52d63.tar.gz
Fix memory leak
-rw-r--r--ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp1
-rw-r--r--ext/intl/tests/rbbiter___construct_basic.phpt11
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==