diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2020-08-26 10:03:11 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-08-26 10:03:28 +0200 |
commit | f6e5cc3391244d52267e8c3a69d3180279afea4f (patch) | |
tree | 84045382006c1690e509f495f54a19b717bedf64 /ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp | |
parent | d4383be6fab1505cf8dac09d487a321fee128b39 (diff) | |
download | php-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.cpp | 9 |
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; |