return NULL;
}
- intern->dit_type = dit_type;
switch (dit_type) {
case DIT_LimitIterator: {
intern->u.limit.offset = 0; /* start at beginning */
if (zend_parse_parameters_none() == FAILURE) {
return NULL;
}
+ intern->dit_type = DIT_AppendIterator;
zend_replace_error_handling(EH_THROW, spl_ce_InvalidArgumentException, &error_handling);
spl_instantiate(spl_ce_ArrayIterator, &intern->u.append.zarrayit);
zend_call_method_with_0_params(Z_OBJ(intern->u.append.zarrayit), spl_ce_ArrayIterator, &spl_ce_ArrayIterator->constructor, "__construct", NULL);
zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0, "Illegal mode " ZEND_LONG_FMT, mode);
return NULL;
}
- intern->u.regex.mode = mode;
- intern->u.regex.regex = zend_string_copy(regex);
zend_replace_error_handling(EH_THROW, spl_ce_InvalidArgumentException, &error_handling);
intern->u.regex.pce = pcre_get_compiled_regex_cache(regex);
/* pcre_get_compiled_regex_cache has already sent error */
return NULL;
}
+ intern->u.regex.mode = mode;
+ intern->u.regex.regex = zend_string_copy(regex);
php_pcre_pce_incref(intern->u.regex.pce);
break;
}
break;
}
+ intern->dit_type = dit_type;
if (inc_refcount) {
Z_ADDREF_P(zobject);
}
--- /dev/null
+--TEST--
+AppendIterator::__construct() with invalid arguments
+--FILE--
+<?php
+
+new AppendIterator(null);
+
+?>
+--EXPECTF--
+Fatal error: Uncaught ArgumentCountError: AppendIterator::__construct() expects exactly 0 parameters, 1 given in %s:%d
+Stack trace:
+#0 %s(%d): AppendIterator->__construct(NULL)
+#1 {main}
+ thrown in %s on line %d