]> granicus.if.org Git - php/commitdiff
Refactor IntlBreakIterator::next() handling
authorGeorge Peter Banyard <girgias@php.net>
Fri, 5 Jun 2020 17:01:13 +0000 (19:01 +0200)
committerGeorge Peter Banyard <girgias@php.net>
Fri, 5 Jun 2020 20:16:33 +0000 (22:16 +0200)
ext/intl/breakiterator/breakiterator_methods.cpp

index 4aecfc4f78d93038422fc7755cf0e5381192984b..7e920fa39c954acfb0bd125036c1f6032b7c8d89 100644 (file)
@@ -240,23 +240,18 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, previous)
 
 U_CFUNC PHP_METHOD(IntlBreakIterator, next)
 {
-       bool no_arg_version = false;
+       zval *arg = NULL;
 
        if (ZEND_NUM_ARGS() == 0) {
-               no_arg_version = true;
-       } else if (ZEND_NUM_ARGS() == 1) {
-               zval *arg;
-               int res = zend_parse_parameters(ZEND_NUM_ARGS(), "z", &arg);
-               assert(res == SUCCESS);
-               if (Z_TYPE_P(arg) == IS_NULL) {
-                       no_arg_version = true;
-                       ZEND_NUM_ARGS() = 0; /* pretend we don't have any argument */
-               } else {
-                       no_arg_version = false;
-               }
+               goto no_arg_version;
+       }
+       if (zend_parse_parameters(ZEND_NUM_ARGS(), "z!", &arg) == FAILURE) {
+               RETURN_THROWS();
        }
 
-       if (no_arg_version) {
+       if (arg == NULL) {
+               ZEND_NUM_ARGS() = 0; /* pretend we don't have any argument */
+               no_arg_version:
                _breakiter_no_args_ret_int32("breakiter_next",
                                &BreakIterator::next,
                                INTERNAL_FUNCTION_PARAM_PASSTHRU);