mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-15 03:46:39 +00:00
Use "isset" logic as fetch always works, even for elements that don't exist and they then just become NULL.
This commit is contained in:
@@ -171,10 +171,23 @@ zval *TWIG_GET_ARRAYOBJECT_ELEMENT(zval *object, zval *offset)
|
|||||||
|
|
||||||
int TWIG_ISSET_ARRAYOBJECT_ELEMENT(zval *object, zval *offset)
|
int TWIG_ISSET_ARRAYOBJECT_ELEMENT(zval *object, zval *offset)
|
||||||
{
|
{
|
||||||
zval *retval = TWIG_GET_ARRAYOBJECT_ELEMENT(object, offset);
|
zend_class_entry *ce = Z_OBJCE_P(object);
|
||||||
if (retval) {
|
zval *retval;
|
||||||
zval_ptr_dtor(&retval);
|
|
||||||
return 1;
|
if (Z_TYPE_P(object) == IS_OBJECT) {
|
||||||
|
SEPARATE_ARG_IF_REF(offset);
|
||||||
|
zend_call_method_with_1_params(&object, ce, NULL, "offsetexists", &retval, offset);
|
||||||
|
|
||||||
|
zval_ptr_dtor(&offset);
|
||||||
|
|
||||||
|
if (UNEXPECTED(!retval)) {
|
||||||
|
if (UNEXPECTED(!EG(exception))) {
|
||||||
|
zend_error_noreturn(E_ERROR, "Undefined offset for object of type %s used as array", ce->name);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (retval && Z_TYPE_P(retval) == IS_BOOL && Z_LVAL_P(retval));
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user