mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
Add RETURN/RETVAL_COPY_DEREF() macros
These were missing from the set... I think quite a few of these usages don't actually need the DEREF, but I've just kept things as is for now.
This commit is contained in:
parent
23b1c4a982
commit
6d505d4445
@ -803,6 +803,7 @@ END_EXTERN_C()
|
||||
#define RETVAL_OBJ_COPY(r) ZVAL_OBJ_COPY(return_value, r)
|
||||
#define RETVAL_COPY(zv) ZVAL_COPY(return_value, zv)
|
||||
#define RETVAL_COPY_VALUE(zv) ZVAL_COPY_VALUE(return_value, zv)
|
||||
#define RETVAL_COPY_DEREF(zv) ZVAL_COPY_DEREF(return_value, zv)
|
||||
#define RETVAL_ZVAL(zv, copy, dtor) ZVAL_ZVAL(return_value, zv, copy, dtor)
|
||||
#define RETVAL_FALSE ZVAL_FALSE(return_value)
|
||||
#define RETVAL_TRUE ZVAL_TRUE(return_value)
|
||||
@ -828,6 +829,7 @@ END_EXTERN_C()
|
||||
#define RETURN_OBJ_COPY(r) do { RETVAL_OBJ_COPY(r); return; } while (0)
|
||||
#define RETURN_COPY(zv) do { RETVAL_COPY(zv); return; } while (0)
|
||||
#define RETURN_COPY_VALUE(zv) do { RETVAL_COPY_VALUE(zv); return; } while (0)
|
||||
#define RETURN_COPY_DEREF(zv) do { RETVAL_COPY_DEREF(zv); return; } while (0)
|
||||
#define RETURN_ZVAL(zv, copy, dtor) do { RETVAL_ZVAL(zv, copy, dtor); return; } while (0)
|
||||
#define RETURN_FALSE do { RETVAL_FALSE; return; } while (0)
|
||||
#define RETURN_TRUE do { RETVAL_TRUE; return; } while (0)
|
||||
|
@ -206,7 +206,7 @@ ZEND_FUNCTION(func_get_arg)
|
||||
arg = ZEND_CALL_ARG(ex, requested_offset + 1);
|
||||
}
|
||||
if (EXPECTED(!Z_ISUNDEF_P(arg))) {
|
||||
ZVAL_COPY_DEREF(return_value, arg);
|
||||
RETURN_COPY_DEREF(arg);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
@ -860,9 +860,7 @@ ZEND_METHOD(Generator, current)
|
||||
|
||||
root = zend_generator_get_current(generator);
|
||||
if (EXPECTED(generator->execute_data != NULL && Z_TYPE(root->value) != IS_UNDEF)) {
|
||||
zval *value = &root->value;
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(&root->value);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
@ -880,9 +878,7 @@ ZEND_METHOD(Generator, key)
|
||||
|
||||
root = zend_generator_get_current(generator);
|
||||
if (EXPECTED(generator->execute_data != NULL && Z_TYPE(root->key) != IS_UNDEF)) {
|
||||
zval *key = &root->key;
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, key);
|
||||
RETURN_COPY_DEREF(&root->key);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
@ -931,9 +927,7 @@ ZEND_METHOD(Generator, send)
|
||||
|
||||
root = zend_generator_get_current(generator);
|
||||
if (EXPECTED(generator->execute_data)) {
|
||||
zval *value = &root->value;
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(&root->value);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
@ -963,9 +957,7 @@ ZEND_METHOD(Generator, throw)
|
||||
|
||||
root = zend_generator_get_current(generator);
|
||||
if (generator->execute_data) {
|
||||
zval *value = &root->value;
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(&root->value);
|
||||
}
|
||||
} else {
|
||||
/* If the generator is already closed throw the exception in the
|
||||
|
@ -507,7 +507,7 @@ ZEND_METHOD(InternalIterator, current) {
|
||||
|
||||
zval *data = intern->iter->funcs->get_current_data(intern->iter);
|
||||
if (data) {
|
||||
ZVAL_COPY_DEREF(return_value, data);
|
||||
RETURN_COPY_DEREF(data);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,7 @@ static void curlfile_get_property(char *name, size_t name_len, INTERNAL_FUNCTION
|
||||
|
||||
ZEND_PARSE_PARAMETERS_NONE();
|
||||
res = zend_read_property(curl_CURLFile_class, Z_OBJ_P(ZEND_THIS), name, name_len, 1, &rv);
|
||||
ZVAL_COPY_DEREF(return_value, res);
|
||||
RETURN_COPY_DEREF(res);
|
||||
}
|
||||
|
||||
static void curlfile_set_property(char *name, size_t name_len, INTERNAL_FUNCTION_PARAMETERS)
|
||||
|
@ -281,8 +281,7 @@ U_CFUNC PHP_METHOD(IntlPartsIterator, getBreakIterator)
|
||||
|
||||
INTLITERATOR_METHOD_FETCH_OBJECT;
|
||||
|
||||
zval *biter_zval = &ii->iterator->data;
|
||||
ZVAL_COPY_DEREF(return_value, biter_zval);
|
||||
RETURN_COPY_DEREF(return_value, &it->iterator->data);
|
||||
}
|
||||
|
||||
U_CFUNC void breakiterator_register_IntlPartsIterator_class(void)
|
||||
|
@ -216,7 +216,7 @@ PHP_METHOD(IntlIterator, current)
|
||||
INTLITERATOR_METHOD_FETCH_OBJECT;
|
||||
data = ii->iterator->funcs->get_current_data(ii->iterator);
|
||||
if (data) {
|
||||
ZVAL_COPY_DEREF(return_value, data);
|
||||
RETURN_COPY_DEREF(data);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3775,7 +3775,7 @@ ZEND_METHOD(ReflectionClassConstant, getName)
|
||||
RETURN_THROWS();
|
||||
}
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, name);
|
||||
RETURN_COPY_DEREF(name);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -4072,17 +4072,16 @@ ZEND_METHOD(ReflectionClass, getStaticPropertyValue)
|
||||
prop = zend_std_get_static_property(ce, name, BP_VAR_IS);
|
||||
EG(fake_scope) = old_scope;
|
||||
|
||||
if (!prop) {
|
||||
if (def_value) {
|
||||
ZVAL_COPY(return_value, def_value);
|
||||
} else {
|
||||
zend_throw_exception_ex(reflection_exception_ptr, 0,
|
||||
"Property %s::$%s does not exist", ZSTR_VAL(ce->name), ZSTR_VAL(name));
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
ZVAL_COPY_DEREF(return_value, prop);
|
||||
if (prop) {
|
||||
RETURN_COPY_DEREF(prop);
|
||||
}
|
||||
|
||||
if (def_value) {
|
||||
RETURN_COPY(def_value);
|
||||
}
|
||||
|
||||
zend_throw_exception_ex(reflection_exception_ptr, 0,
|
||||
"Property %s::$%s does not exist", ZSTR_VAL(ce->name), ZSTR_VAL(name));
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -5568,7 +5567,7 @@ ZEND_METHOD(ReflectionProperty, getValue)
|
||||
if (prop_get_flags(ref) & ZEND_ACC_STATIC) {
|
||||
member_p = zend_read_static_property_ex(intern->ce, ref->unmangled_name, 0);
|
||||
if (member_p) {
|
||||
ZVAL_COPY_DEREF(return_value, member_p);
|
||||
RETURN_COPY_DEREF(member_p);
|
||||
}
|
||||
} else {
|
||||
zval rv;
|
||||
@ -5586,12 +5585,12 @@ ZEND_METHOD(ReflectionProperty, getValue)
|
||||
|
||||
member_p = zend_read_property_ex(intern->ce, Z_OBJ_P(object), ref->unmangled_name, 0, &rv);
|
||||
if (member_p != &rv) {
|
||||
ZVAL_COPY_DEREF(return_value, member_p);
|
||||
RETURN_COPY_DEREF(member_p);
|
||||
} else {
|
||||
if (Z_ISREF_P(member_p)) {
|
||||
zend_unwrap_reference(member_p);
|
||||
}
|
||||
ZVAL_COPY_VALUE(return_value, member_p);
|
||||
RETURN_COPY_VALUE(member_p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1998,7 +1998,6 @@ PHP_METHOD(SimpleXMLElement, valid)
|
||||
PHP_METHOD(SimpleXMLElement, current)
|
||||
{
|
||||
php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS);
|
||||
zval *data;
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
@ -2009,8 +2008,7 @@ PHP_METHOD(SimpleXMLElement, current)
|
||||
RETURN_THROWS();
|
||||
}
|
||||
|
||||
data = &sxe->iter.data;
|
||||
ZVAL_COPY_DEREF(return_value, data);
|
||||
RETURN_COPY_DEREF(&sxe->iter.data);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -2083,7 +2081,6 @@ PHP_METHOD(SimpleXMLElement, hasChildren)
|
||||
PHP_METHOD(SimpleXMLElement, getChildren)
|
||||
{
|
||||
php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS);
|
||||
zval *data;
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
RETURN_THROWS();
|
||||
@ -2093,8 +2090,7 @@ PHP_METHOD(SimpleXMLElement, getChildren)
|
||||
return; /* return NULL */
|
||||
}
|
||||
|
||||
data = &sxe->iter.data;
|
||||
ZVAL_COPY_DEREF(return_value, data);
|
||||
RETURN_COPY_DEREF(&sxe->iter.data);
|
||||
}
|
||||
|
||||
static zend_object_handlers sxe_object_handlers;
|
||||
|
@ -665,7 +665,7 @@ PHP_METHOD(ArrayObject, offsetGet)
|
||||
}
|
||||
value = spl_array_read_dimension_ex(0, Z_OBJ_P(ZEND_THIS), index, BP_VAR_R, return_value);
|
||||
if (value != return_value) {
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(value);
|
||||
}
|
||||
} /* }}} */
|
||||
|
||||
@ -1465,7 +1465,7 @@ PHP_METHOD(ArrayIterator, current)
|
||||
return;
|
||||
}
|
||||
}
|
||||
ZVAL_COPY_DEREF(return_value, entry);
|
||||
RETURN_COPY_DEREF(entry);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
@ -575,7 +575,7 @@ PHP_METHOD(SplDoublyLinkedList, top)
|
||||
RETURN_THROWS();
|
||||
}
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(value);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -597,7 +597,7 @@ PHP_METHOD(SplDoublyLinkedList, bottom)
|
||||
RETURN_THROWS();
|
||||
}
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(value);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -708,7 +708,7 @@ PHP_METHOD(SplDoublyLinkedList, offsetGet)
|
||||
RETURN_THROWS();
|
||||
}
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, &element->data);
|
||||
RETURN_COPY_DEREF(&element->data);
|
||||
} /* }}} */
|
||||
|
||||
/* {{{ Sets the value at the specified $index to $newval. */
|
||||
@ -1001,7 +1001,7 @@ PHP_METHOD(SplDoublyLinkedList, current)
|
||||
if (element == NULL || Z_ISUNDEF(element->data)) {
|
||||
RETURN_NULL();
|
||||
} else {
|
||||
ZVAL_COPY_DEREF(return_value, &element->data);
|
||||
RETURN_COPY_DEREF(&element->data);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
@ -742,7 +742,7 @@ PHP_METHOD(SplFixedArray, offsetGet)
|
||||
value = spl_fixedarray_object_read_dimension_helper(intern, zindex);
|
||||
|
||||
if (value) {
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(value);
|
||||
} else {
|
||||
RETURN_NULL();
|
||||
}
|
||||
|
@ -860,7 +860,7 @@ PHP_METHOD(SplHeap, top)
|
||||
RETURN_THROWS();
|
||||
}
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(value);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -1034,7 +1034,7 @@ PHP_METHOD(SplHeap, current)
|
||||
RETURN_NULL();
|
||||
} else {
|
||||
zval *element = spl_heap_elem(intern->heap, 0);
|
||||
ZVAL_COPY_DEREF(return_value, element);
|
||||
RETURN_COPY_DEREF(element);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
@ -687,7 +687,7 @@ PHP_METHOD(RecursiveIteratorIterator, current)
|
||||
|
||||
data = iterator->funcs->get_current_data(iterator);
|
||||
if (data) {
|
||||
ZVAL_COPY_DEREF(return_value, data);
|
||||
RETURN_COPY_DEREF(data);
|
||||
}
|
||||
} /* }}} */
|
||||
|
||||
@ -739,7 +739,7 @@ PHP_METHOD(RecursiveIteratorIterator, getSubIterator)
|
||||
}
|
||||
|
||||
value = &object->iterators[level].zobject;
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(value);
|
||||
} /* }}} */
|
||||
|
||||
/* {{{ The current active sub iterator */
|
||||
@ -754,7 +754,7 @@ PHP_METHOD(RecursiveIteratorIterator, getInnerIterator)
|
||||
|
||||
SPL_FETCH_SUB_ELEMENT_ADDR(zobject, object, zobject);
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, zobject);
|
||||
RETURN_COPY_DEREF(zobject);
|
||||
} /* }}} */
|
||||
|
||||
/* {{{ Called when iteration begins (after first rewind() call) */
|
||||
@ -1172,8 +1172,7 @@ PHP_METHOD(RecursiveTreeIterator, current)
|
||||
SPL_FETCH_SUB_ITERATOR(iterator, object);
|
||||
data = iterator->funcs->get_current_data(iterator);
|
||||
if (data) {
|
||||
ZVAL_COPY_DEREF(return_value, data);
|
||||
return;
|
||||
RETURN_COPY_DEREF(data);
|
||||
} else {
|
||||
RETURN_NULL();
|
||||
}
|
||||
@ -1461,8 +1460,7 @@ PHP_METHOD(IteratorIterator, getInnerIterator)
|
||||
|
||||
if (!Z_ISUNDEF(intern->inner.zobject)) {
|
||||
zval *value = &intern->inner.zobject;
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(value);
|
||||
} else {
|
||||
RETURN_NULL();
|
||||
}
|
||||
@ -1589,9 +1587,7 @@ PHP_METHOD(IteratorIterator, key)
|
||||
SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS);
|
||||
|
||||
if (Z_TYPE(intern->current.key) != IS_UNDEF) {
|
||||
zval *value = &intern->current.key;
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(&intern->current.key);
|
||||
} else {
|
||||
RETURN_NULL();
|
||||
}
|
||||
@ -1609,9 +1605,7 @@ PHP_METHOD(IteratorIterator, current)
|
||||
SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS);
|
||||
|
||||
if (Z_TYPE(intern->current.data) != IS_UNDEF) {
|
||||
zval *value = &intern->current.data;
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(&intern->current.data);
|
||||
} else {
|
||||
RETURN_NULL();
|
||||
}
|
||||
@ -2526,7 +2520,7 @@ PHP_METHOD(CachingIterator, offsetGet)
|
||||
return;
|
||||
}
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(value);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -2695,7 +2689,7 @@ PHP_METHOD(RecursiveCachingIterator, getChildren)
|
||||
if (Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF) {
|
||||
zval *value = &intern->u.caching.zchildren;
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(value);
|
||||
} else {
|
||||
RETURN_NULL();
|
||||
}
|
||||
@ -2766,7 +2760,7 @@ PHP_METHOD(NoRewindIterator, current)
|
||||
SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS);
|
||||
data = intern->inner.iterator->funcs->get_current_data(intern->inner.iterator);
|
||||
if (data) {
|
||||
ZVAL_COPY_DEREF(return_value, data);
|
||||
RETURN_COPY_DEREF(data);
|
||||
}
|
||||
} /* }}} */
|
||||
|
||||
@ -2952,9 +2946,7 @@ PHP_METHOD(AppendIterator, current)
|
||||
|
||||
spl_dual_it_fetch(intern, 1);
|
||||
if (Z_TYPE(intern->current.data) != IS_UNDEF) {
|
||||
zval *value = &intern->current.data;
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(&intern->current.data);
|
||||
} else {
|
||||
RETURN_NULL();
|
||||
}
|
||||
@ -3033,7 +3025,7 @@ PHP_METHOD(AppendIterator, getArrayIterator)
|
||||
SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS);
|
||||
|
||||
value = &intern->u.append.zarrayit;
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(value);
|
||||
} /* }}} */
|
||||
|
||||
PHPAPI int spl_iterator_apply(zval *obj, spl_iterator_apply_func_t apply_func, void *puser)
|
||||
|
@ -411,9 +411,7 @@ PHP_METHOD(SplObjectStorage, offsetGet)
|
||||
if (!element) {
|
||||
zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0, "Object not found");
|
||||
} else {
|
||||
zval *value = &element->inf;
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, value);
|
||||
RETURN_COPY_DEREF(&element->inf);
|
||||
}
|
||||
} /* }}} */
|
||||
|
||||
|
@ -1082,7 +1082,7 @@ PHP_FUNCTION(end)
|
||||
entry = Z_INDIRECT_P(entry);
|
||||
}
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, entry);
|
||||
RETURN_COPY_DEREF(entry);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
@ -1109,7 +1109,7 @@ PHP_FUNCTION(prev)
|
||||
entry = Z_INDIRECT_P(entry);
|
||||
}
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, entry);
|
||||
RETURN_COPY_DEREF(entry);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
@ -1136,7 +1136,7 @@ PHP_FUNCTION(next)
|
||||
entry = Z_INDIRECT_P(entry);
|
||||
}
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, entry);
|
||||
RETURN_COPY_DEREF(entry);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
@ -1163,7 +1163,7 @@ PHP_FUNCTION(reset)
|
||||
entry = Z_INDIRECT_P(entry);
|
||||
}
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, entry);
|
||||
RETURN_COPY_DEREF(entry);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
@ -1187,7 +1187,7 @@ PHP_FUNCTION(current)
|
||||
entry = Z_INDIRECT_P(entry);
|
||||
}
|
||||
|
||||
ZVAL_COPY_DEREF(return_value, entry);
|
||||
RETURN_COPY_DEREF(entry);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -1226,7 +1226,7 @@ PHP_FUNCTION(min)
|
||||
} else {
|
||||
zval *result = zend_hash_minmax(Z_ARRVAL(args[0]), php_array_data_compare_unstable, 0);
|
||||
if (result) {
|
||||
ZVAL_COPY_DEREF(return_value, result);
|
||||
RETURN_COPY_DEREF(result);
|
||||
} else {
|
||||
zend_argument_value_error(1, "must contain at least one element");
|
||||
RETURN_THROWS();
|
||||
@ -1246,7 +1246,7 @@ PHP_FUNCTION(min)
|
||||
}
|
||||
}
|
||||
|
||||
ZVAL_COPY(return_value, min);
|
||||
RETURN_COPY(min);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
@ -1272,7 +1272,7 @@ PHP_FUNCTION(max)
|
||||
} else {
|
||||
zval *result = zend_hash_minmax(Z_ARRVAL(args[0]), php_array_data_compare_unstable, 1);
|
||||
if (result) {
|
||||
ZVAL_COPY_DEREF(return_value, result);
|
||||
RETURN_COPY_DEREF(result);
|
||||
} else {
|
||||
zend_argument_value_error(1, "must contain at least one element");
|
||||
RETURN_THROWS();
|
||||
@ -1292,7 +1292,7 @@ PHP_FUNCTION(max)
|
||||
}
|
||||
}
|
||||
|
||||
ZVAL_COPY(return_value, max);
|
||||
RETURN_COPY(max);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
@ -3137,7 +3137,7 @@ PHP_FUNCTION(array_pop)
|
||||
break;
|
||||
}
|
||||
}
|
||||
ZVAL_COPY_DEREF(return_value, val);
|
||||
RETVAL_COPY_DEREF(val);
|
||||
|
||||
if (!p->key && (zend_long)p->h == (Z_ARRVAL_P(stack)->nNextFreeElement - 1)) {
|
||||
Z_ARRVAL_P(stack)->nNextFreeElement = Z_ARRVAL_P(stack)->nNextFreeElement - 1;
|
||||
@ -3178,7 +3178,7 @@ PHP_FUNCTION(array_shift)
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
ZVAL_COPY_DEREF(return_value, val);
|
||||
RETVAL_COPY_DEREF(val);
|
||||
|
||||
/* Delete the first value */
|
||||
zend_hash_del_bucket(Z_ARRVAL_P(stack), p);
|
||||
|
@ -1738,13 +1738,13 @@ PHP_FUNCTION(pathinfo)
|
||||
}
|
||||
|
||||
if (opt == PHP_PATHINFO_ALL) {
|
||||
ZVAL_COPY_VALUE(return_value, &tmp);
|
||||
RETURN_COPY_VALUE(&tmp);
|
||||
} else {
|
||||
zval *element;
|
||||
if ((element = zend_hash_get_current_data(Z_ARRVAL(tmp))) != NULL) {
|
||||
ZVAL_COPY_DEREF(return_value, element);
|
||||
RETVAL_COPY_DEREF(element);
|
||||
} else {
|
||||
ZVAL_EMPTY_STRING(return_value);
|
||||
RETVAL_EMPTY_STRING();
|
||||
}
|
||||
zval_ptr_dtor(&tmp);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user