summaryrefslogtreecommitdiff
path: root/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-08-26 10:03:11 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-08-26 10:03:28 +0200
commitf6e5cc3391244d52267e8c3a69d3180279afea4f (patch)
tree84045382006c1690e509f495f54a19b717bedf64 /ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
parentd4383be6fab1505cf8dac09d487a321fee128b39 (diff)
downloadphp-git-f6e5cc3391244d52267e8c3a69d3180279afea4f.tar.gz
Prevent double-construction of IntlRuleBasedBreakIterator
Diffstat (limited to 'ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp')
-rw-r--r--ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
index 476873330d..f17733da24 100644
--- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
+++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
@@ -37,13 +37,20 @@ static void _php_intlrbbi_constructor_body(INTERNAL_FUNCTION_PARAMETERS)
size_t rules_len;
zend_bool compiled = 0;
UErrorCode status = U_ZERO_ERROR;
- intl_error_reset(NULL);
+ BREAKITER_METHOD_INIT_VARS;
+ object = ZEND_THIS;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|b",
&rules, &rules_len, &compiled) == FAILURE) {
RETURN_THROWS();
}
+ BREAKITER_METHOD_FETCH_OBJECT_NO_CHECK;
+ if (bio->biter) {
+ zend_throw_error(NULL, "IntlRuleBasedBreakIterator object is already constructed");
+ RETURN_THROWS();
+ }
+
// instantiation of ICU object
RuleBasedBreakIterator *rbbi;