1
0
mirror of https://github.com/php/php-src.git synced 2026-04-29 03:03:26 +02:00

Refactored Spl_Arrary to fixed zend_object->default_properties change

This commit is contained in:
Xinchen Hui
2014-03-15 14:32:32 +08:00
parent bfe1f224b2
commit 4d9d08269c
+75 -70
View File
@@ -63,7 +63,6 @@ PHPAPI zend_class_entry *spl_ce_RecursiveArrayIterator;
#define SPL_ARRAY_METHOD_MAY_USER_ARG 2
typedef struct _spl_array_object {
zend_object std;
zval array;
zval retval;
HashPosition pos;
@@ -76,10 +75,18 @@ typedef struct _spl_array_object {
zend_function *fptr_offset_del;
zend_function *fptr_count;
zend_class_entry* ce_get_iterator;
HashTable *debug_info;
unsigned char nApplyCount;
HashTable *debug_info;
unsigned char nApplyCount;
zend_object std;
} spl_array_object;
static inline spl_array_object *spl_array_from_obj(zend_object *obj) /* {{{ */ {
return (spl_array_object*)((char*)(obj) - XtOffsetOf(spl_array_object, std));
}
/* }}} */
#define Z_SPLARRAY_P(zv) spl_array_from_obj(Z_OBJ_P((zv)))
static inline HashTable *spl_array_get_hash_table(spl_array_object* intern, int check_std_props TSRMLS_DC) { /* {{{ */
if ((intern->ar_flags & SPL_ARRAY_IS_SELF) != 0) {
if (!intern->std.properties) {
@@ -87,7 +94,7 @@ static inline HashTable *spl_array_get_hash_table(spl_array_object* intern, int
}
return intern->std.properties;
} else if ((intern->ar_flags & SPL_ARRAY_USE_OTHER) && (check_std_props == 0 || (intern->ar_flags & SPL_ARRAY_STD_PROP_LIST) == 0) && Z_TYPE(intern->array) == IS_OBJECT) {
spl_array_object *other = (spl_array_object*)Z_OBJ_P(&intern->array);
spl_array_object *other = Z_SPLARRAY_P(&intern->array);
return spl_array_get_hash_table(other, check_std_props TSRMLS_CC);
} else if ((intern->ar_flags & ((check_std_props ? SPL_ARRAY_STD_PROP_LIST : 0) | SPL_ARRAY_IS_SELF)) != 0) {
if (!intern->std.properties) {
@@ -151,19 +158,19 @@ SPL_API int spl_hash_verify_pos(spl_array_object * intern TSRMLS_DC) /* {{{ */
/* {{{ spl_array_object_free_storage */
static void spl_array_object_free_storage(zend_object *object TSRMLS_DC)
{
spl_array_object *intern = (spl_array_object *)object;
spl_array_object *intern = spl_array_from_obj(object);
zend_object_std_dtor(&intern->std TSRMLS_CC);
zval_dtor(&intern->array);
zval_dtor(&intern->retval);
zval_ptr_dtor(&intern->array);
zval_ptr_dtor(&intern->retval);
if (intern->debug_info != NULL) {
zend_hash_destroy(intern->debug_info);
efree(intern->debug_info);
}
efree(object);
efree(intern);
}
/* }}} */
@@ -173,11 +180,10 @@ zend_object_iterator *spl_array_get_iterator(zend_class_entry *ce, zval *object,
static zend_object *spl_array_object_new_ex(zend_class_entry *class_type, zval *orig, int clone_orig TSRMLS_DC)
{
spl_array_object *intern;
zend_class_entry * parent = class_type;
zend_class_entry *parent = class_type;
int inherited = 0;
intern = emalloc(sizeof(spl_array_object));
memset(intern, 0, sizeof(spl_array_object));
intern = ecalloc(1, sizeof(spl_array_object) + sizeof(zval) * (parent->default_properties_count - 1));
zend_object_std_init(&intern->std, class_type TSRMLS_CC);
object_properties_init(&intern->std, class_type);
@@ -186,7 +192,7 @@ static zend_object *spl_array_object_new_ex(zend_class_entry *class_type, zval *
intern->debug_info = NULL;
intern->ce_get_iterator = spl_ce_ArrayIterator;
if (orig) {
spl_array_object *other = (spl_array_object*)Z_OBJ_P(orig);
spl_array_object *other = Z_SPLARRAY_P(orig);
intern->ar_flags &= ~ SPL_ARRAY_CLONE_MASK;
intern->ar_flags |= (other->ar_flags & SPL_ARRAY_CLONE_MASK);
@@ -295,11 +301,11 @@ static zend_object *spl_array_object_clone(zval *zobject TSRMLS_DC)
static zval *spl_array_get_dimension_ptr(int check_inherited, zval *object, zval *offset, int type TSRMLS_DC) /* {{{ */
{
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
zval *retval;
long index;
HashTable *ht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
zend_string *offset_key;
spl_array_object *intern = Z_SPLARRAY_P(object);
HashTable *ht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
if (ZVAL_IS_UNDEF(offset)) {
return &EG(uninitialized_zval);
@@ -329,7 +335,7 @@ fetch_dim_string:
zend_error(E_NOTICE,"Undefined index: %s", offset_key->val);
case BP_VAR_W: {
zval value;
ZVAL_UNDEF(&value);
ZVAL_NULL(&value);
retval = zend_symtable_update(ht, offset_key, &value);
}
}
@@ -375,7 +381,7 @@ static zval *spl_array_read_dimension_ex(int check_inherited, zval *object, zval
zval *ret;
if (check_inherited) {
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
if (intern->fptr_offset_get) {
zval rv, tmp;
if (!offset) {
@@ -398,16 +404,16 @@ static zval *spl_array_read_dimension_ex(int check_inherited, zval *object, zval
//!!! FIXME?
// ZVAL_COPY(result, ret);
return ret;
/* When in a write context,
* ZE has to be fooled into thinking this is in a reference set
* by separating (if necessary) and returning as an is_ref=1 zval (even if refcount == 1)
*/
if ((type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET) && !Z_ISREF_PP(ret)) {
Z_SET_ISREF_P(ret);
if ((type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET) && !Z_ISREF_P(ret)) {
ZVAL_NEW_REF(ret, ret);
}
*/
return ret;
} /* }}} */
static zval *spl_array_read_dimension(zval *object, zval *offset, int type, zval *rv TSRMLS_DC) /* {{{ */
@@ -417,7 +423,7 @@ static zval *spl_array_read_dimension(zval *object, zval *offset, int type, zval
static void spl_array_write_dimension_ex(int check_inherited, zval *object, zval *offset, zval *value TSRMLS_DC) /* {{{ */
{
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
long index;
HashTable *ht;
@@ -498,7 +504,7 @@ static void spl_array_unset_dimension_ex(int check_inherited, zval *object, zval
{
long index;
HashTable *ht;
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
if (check_inherited && intern->fptr_offset_del) {
SEPARATE_ARG_IF_REF(offset);
@@ -529,10 +535,10 @@ static void spl_array_unset_dimension_ex(int check_inherited, zval *object, zval
break;
} else if (Z_TYPE(obj->array) == IS_OBJECT) {
if ((obj->ar_flags & SPL_ARRAY_USE_OTHER) == 0) {
obj = (spl_array_object*)Z_OBJ_P(&obj->array);
obj = Z_SPLARRAY_P(&obj->array);
break;
} else {
obj = (spl_array_object*)Z_OBJ_P(&obj->array);
obj = Z_SPLARRAY_P(&obj->array);
}
} else {
obj = NULL;
@@ -586,7 +592,7 @@ static int spl_array_has_dimension_ex(int check_inherited, zval *object, zval *o
{
long index;
zval rv, *tmp;
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
if (check_inherited && intern->fptr_offset_has) {
SEPARATE_ARG_IF_REF(offset);
@@ -712,7 +718,7 @@ SPL_METHOD(Array, offsetSet)
void spl_array_iterator_append(zval *object, zval *append_value TSRMLS_DC) /* {{{ */
{
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
HashTable *aht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
if (!aht) {
@@ -764,7 +770,7 @@ SPL_METHOD(Array, offsetUnset)
SPL_METHOD(Array, getArrayCopy)
{
zval *object = getThis();
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
array_init(return_value);
zend_hash_copy(Z_ARRVAL_P(return_value), spl_array_get_hash_table(intern, 0 TSRMLS_CC), (copy_ctor_func_t) zval_add_ref);
@@ -772,7 +778,7 @@ SPL_METHOD(Array, getArrayCopy)
static HashTable *spl_array_get_properties(zval *object TSRMLS_DC) /* {{{ */
{
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
HashTable *result;
if (intern->nApplyCount > 1) {
@@ -790,7 +796,7 @@ static HashTable* spl_array_get_debug_info(zval *obj, int *is_temp TSRMLS_DC) /*
zval *storage;
zend_string *zname;
zend_class_entry *base;
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(obj);
spl_array_object *intern = Z_SPLARRAY_P(obj);
*is_temp = 0;
@@ -826,7 +832,7 @@ static HashTable* spl_array_get_debug_info(zval *obj, int *is_temp TSRMLS_DC) /*
static zval *spl_array_read_property(zval *object, zval *member, int type, const zend_literal *key, zval *rv TSRMLS_DC) /* {{{ */
{
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
if ((intern->ar_flags & SPL_ARRAY_ARRAY_AS_PROPS) != 0
&& !std_object_handlers.has_property(object, member, 2, key TSRMLS_CC)) {
@@ -837,7 +843,7 @@ static zval *spl_array_read_property(zval *object, zval *member, int type, const
static void spl_array_write_property(zval *object, zval *member, zval *value, const zend_literal *key TSRMLS_DC) /* {{{ */
{
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
if ((intern->ar_flags & SPL_ARRAY_ARRAY_AS_PROPS) != 0
&& !std_object_handlers.has_property(object, member, 2, key TSRMLS_CC)) {
@@ -849,7 +855,7 @@ static void spl_array_write_property(zval *object, zval *member, zval *value, co
static zval *spl_array_get_property_ptr_ptr(zval *object, zval *member, int type, const zend_literal *key TSRMLS_DC) /* {{{ */
{
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
if ((intern->ar_flags & SPL_ARRAY_ARRAY_AS_PROPS) != 0
&& !std_object_handlers.has_property(object, member, 2, key TSRMLS_CC)) {
@@ -862,7 +868,7 @@ static zval *spl_array_get_property_ptr_ptr(zval *object, zval *member, int type
static int spl_array_has_property(zval *object, zval *member, int has_set_exists, const zend_literal *key TSRMLS_DC) /* {{{ */
{
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
if ((intern->ar_flags & SPL_ARRAY_ARRAY_AS_PROPS) != 0
&& !std_object_handlers.has_property(object, member, 2, key TSRMLS_CC)) {
@@ -873,7 +879,7 @@ static int spl_array_has_property(zval *object, zval *member, int has_set_exists
static void spl_array_unset_property(zval *object, zval *member, const zend_literal *key TSRMLS_DC) /* {{{ */
{
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
if ((intern->ar_flags & SPL_ARRAY_ARRAY_AS_PROPS) != 0
&& !std_object_handlers.has_property(object, member, 2, key TSRMLS_CC)) {
@@ -893,8 +899,8 @@ static int spl_array_compare_objects(zval *o1, zval *o2 TSRMLS_DC) /* {{{ */
int result = 0;
zval temp_zv;
intern1 = (spl_array_object*)Z_OBJ_P(o1);
intern2 = (spl_array_object*)Z_OBJ_P(o2);
intern1 = Z_SPLARRAY_P(o1);
intern2 = Z_SPLARRAY_P(o2);
ht1 = spl_array_get_hash_table(intern1, 0 TSRMLS_CC);
ht2 = spl_array_get_hash_table(intern2, 0 TSRMLS_CC);
@@ -972,7 +978,7 @@ static void spl_array_it_dtor(zend_object_iterator *iter TSRMLS_DC) /* {{{ */
static int spl_array_it_valid(zend_object_iterator *iter TSRMLS_DC) /* {{{ */
{
spl_array_object *object = (spl_array_object*)Z_OBJ(iter->data);
spl_array_object *object = Z_SPLARRAY_P(&iter->data);
HashTable *aht = spl_array_get_hash_table(object, 0 TSRMLS_CC);
if (object->ar_flags & SPL_ARRAY_OVERLOADED_VALID) {
@@ -989,8 +995,8 @@ static int spl_array_it_valid(zend_object_iterator *iter TSRMLS_DC) /* {{{ */
static zval *spl_array_it_get_current_data(zend_object_iterator *iter TSRMLS_DC) /* {{{ */
{
spl_array_object *object = (spl_array_object*)Z_OBJ(iter->data);
HashTable *aht = spl_array_get_hash_table(object, 0 TSRMLS_CC);
spl_array_object *object = Z_SPLARRAY_P(&iter->data);
HashTable *aht = spl_array_get_hash_table(object, 0 TSRMLS_CC);
if (object->ar_flags & SPL_ARRAY_OVERLOADED_CURRENT) {
return zend_user_it_get_current_data(iter TSRMLS_CC);
@@ -1002,7 +1008,7 @@ static zval *spl_array_it_get_current_data(zend_object_iterator *iter TSRMLS_DC)
static void spl_array_it_get_current_key(zend_object_iterator *iter, zval *key TSRMLS_DC) /* {{{ */
{
spl_array_object *object = (spl_array_object*)Z_OBJ(iter->data);
spl_array_object *object = Z_SPLARRAY_P(&iter->data);
HashTable *aht = spl_array_get_hash_table(object, 0 TSRMLS_CC);
if (object->ar_flags & SPL_ARRAY_OVERLOADED_KEY) {
@@ -1019,7 +1025,7 @@ static void spl_array_it_get_current_key(zend_object_iterator *iter, zval *key T
static void spl_array_it_move_forward(zend_object_iterator *iter TSRMLS_DC) /* {{{ */
{
spl_array_object *object = (spl_array_object*)Z_OBJ(iter->data);
spl_array_object *object = Z_SPLARRAY_P(&iter->data);
HashTable *aht = spl_array_get_hash_table(object, 0 TSRMLS_CC);
if (object->ar_flags & SPL_ARRAY_OVERLOADED_NEXT) {
@@ -1064,7 +1070,7 @@ static void spl_array_rewind(spl_array_object *intern TSRMLS_DC) /* {{{ */
static void spl_array_it_rewind(zend_object_iterator *iter TSRMLS_DC) /* {{{ */
{
spl_array_object *object = (spl_array_object*)Z_OBJ(iter->data);
spl_array_object *object = Z_SPLARRAY_P(&iter->data);
if (object->ar_flags & SPL_ARRAY_OVERLOADED_REWIND) {
zend_user_it_rewind(iter TSRMLS_CC);
@@ -1085,7 +1091,7 @@ static void spl_array_set_array(zval *object, spl_array_object *intern, zval *ar
if (Z_TYPE_P(array) == IS_OBJECT && (Z_OBJ_HT_P(array) == &spl_handler_ArrayObject || Z_OBJ_HT_P(array) == &spl_handler_ArrayIterator)) {
zval_ptr_dtor(&intern->array);
if (just_array) {
spl_array_object *other = (spl_array_object*)Z_OBJ_P(array);
spl_array_object *other = Z_SPLARRAY_P(array);
ar_flags = other->ar_flags & ~SPL_ARRAY_INT_MASK;
}
ar_flags |= SPL_ARRAY_USE_OTHER;
@@ -1098,7 +1104,7 @@ static void spl_array_set_array(zval *object, spl_array_object *intern, zval *ar
zval_ptr_dtor(&intern->array);
intern->array = *array;
}
if (object == array) {
if (Z_TYPE_P(array) == IS_OBJECT && Z_OBJ_P(object) == Z_OBJ_P(array)) {
intern->ar_flags |= SPL_ARRAY_IS_SELF;
intern->ar_flags &= ~SPL_ARRAY_USE_OTHER;
} else {
@@ -1131,7 +1137,7 @@ zend_object_iterator_funcs spl_array_it_funcs = {
zend_object_iterator *spl_array_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC) /* {{{ */
{
zend_user_iterator *iterator;
spl_array_object *array_object = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *array_object = Z_SPLARRAY_P(object);
if (by_ref && (array_object->ar_flags & SPL_ARRAY_OVERLOADED_CURRENT)) {
zend_error(E_ERROR, "An iterator cannot be used with foreach by reference");
@@ -1168,7 +1174,7 @@ SPL_METHOD(Array, __construct)
zend_replace_error_handling(EH_THROW, spl_ce_InvalidArgumentException, &error_handling TSRMLS_CC);
intern = (spl_array_object*)Z_OBJ_P(object);
intern = Z_SPLARRAY_P(object);
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|lC", &array, &ar_flags, &ce_get_iterator) == FAILURE) {
zend_restore_error_handling(&error_handling TSRMLS_CC);
@@ -1193,7 +1199,7 @@ SPL_METHOD(Array, __construct)
SPL_METHOD(Array, setIteratorClass)
{
zval *object = getThis();
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
zend_class_entry * ce_get_iterator = spl_ce_Iterator;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "C", &ce_get_iterator) == FAILURE) {
@@ -1209,7 +1215,7 @@ SPL_METHOD(Array, setIteratorClass)
SPL_METHOD(Array, getIteratorClass)
{
zval *object = getThis();
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
if (zend_parse_parameters_none() == FAILURE) {
return;
@@ -1224,7 +1230,7 @@ SPL_METHOD(Array, getIteratorClass)
SPL_METHOD(Array, getFlags)
{
zval *object = getThis();
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
if (zend_parse_parameters_none() == FAILURE) {
return;
@@ -1239,7 +1245,7 @@ SPL_METHOD(Array, getFlags)
SPL_METHOD(Array, setFlags)
{
zval *object = getThis();
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
long ar_flags = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &ar_flags) == FAILURE) {
@@ -1255,11 +1261,10 @@ SPL_METHOD(Array, setFlags)
SPL_METHOD(Array, exchangeArray)
{
zval *object = getThis(), *array;
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
array_init(return_value);
zend_hash_copy(HASH_OF(return_value), spl_array_get_hash_table(intern, 0 TSRMLS_CC), (copy_ctor_func_t)zval_add_ref);
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &array) == FAILURE) {
return;
}
@@ -1273,7 +1278,7 @@ SPL_METHOD(Array, exchangeArray)
SPL_METHOD(Array, getIterator)
{
zval *object = getThis();
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
HashTable *aht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
if (zend_parse_parameters_none() == FAILURE) {
@@ -1296,7 +1301,7 @@ SPL_METHOD(Array, getIterator)
SPL_METHOD(Array, rewind)
{
zval *object = getThis();
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
if (zend_parse_parameters_none() == FAILURE) {
return;
@@ -1312,7 +1317,7 @@ SPL_METHOD(Array, seek)
{
long opos, position;
zval *object = getThis();
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
HashTable *aht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
int result;
@@ -1370,7 +1375,7 @@ int static spl_array_object_count_elements_helper(spl_array_object *intern, long
int spl_array_object_count_elements(zval *object, long *count TSRMLS_DC) /* {{{ */
{
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
if (intern->fptr_count) {
zval rv;
@@ -1394,7 +1399,7 @@ int spl_array_object_count_elements(zval *object, long *count TSRMLS_DC) /* {{{
SPL_METHOD(Array, count)
{
long count;
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(getThis());
spl_array_object *intern = Z_SPLARRAY_P(getThis());
if (zend_parse_parameters_none() == FAILURE) {
return;
@@ -1407,7 +1412,7 @@ SPL_METHOD(Array, count)
static void spl_array_method(INTERNAL_FUNCTION_PARAMETERS, char *fname, int fname_len, int use_arg) /* {{{ */
{
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(getThis());
spl_array_object *intern = Z_SPLARRAY_P(getThis());
HashTable *aht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
zval tmp, *arg = NULL;
zval retval;
@@ -1486,7 +1491,7 @@ SPL_ARRAY_METHOD(Array, natcasesort, SPL_ARRAY_METHOD_NO_ARG) /* }}} */
SPL_METHOD(Array, current)
{
zval *object = getThis();
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
zval *entry;
HashTable *aht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
@@ -1518,7 +1523,7 @@ SPL_METHOD(Array, key)
void spl_array_iterator_key(zval *object, zval *return_value TSRMLS_DC) /* {{{ */
{
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
HashTable *aht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
if (spl_array_object_verify_pos(intern, aht TSRMLS_CC) == FAILURE) {
@@ -1534,7 +1539,7 @@ void spl_array_iterator_key(zval *object, zval *return_value TSRMLS_DC) /* {{{ *
SPL_METHOD(Array, next)
{
zval *object = getThis();
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
HashTable *aht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
if (zend_parse_parameters_none() == FAILURE) {
@@ -1554,7 +1559,7 @@ SPL_METHOD(Array, next)
SPL_METHOD(Array, valid)
{
zval *object = getThis();
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
HashTable *aht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
if (zend_parse_parameters_none() == FAILURE) {
@@ -1574,7 +1579,7 @@ SPL_METHOD(Array, valid)
SPL_METHOD(Array, hasChildren)
{
zval *object = getThis(), *entry;
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
HashTable *aht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
if (zend_parse_parameters_none() == FAILURE) {
@@ -1598,7 +1603,7 @@ SPL_METHOD(Array, hasChildren)
SPL_METHOD(Array, getChildren)
{
zval *object = getThis(), *entry, flags;
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
HashTable *aht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
if (zend_parse_parameters_none() == FAILURE) {
@@ -1632,7 +1637,7 @@ SPL_METHOD(Array, getChildren)
SPL_METHOD(Array, serialize)
{
zval *object = getThis();
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
spl_array_object *intern = Z_SPLARRAY_P(object);
HashTable *aht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
zval members, flags;
php_serialize_data_t var_hash;
@@ -1672,15 +1677,15 @@ SPL_METHOD(Array, serialize)
php_var_serialize(&buf, &members, &var_hash TSRMLS_CC); /* finishes the string */
zval_ptr_dtor(&members);
/* done */
PHP_VAR_SERIALIZE_DESTROY(var_hash);
if (buf.s) {
RETVAL_STR(buf.s);
RETURN_STR(buf.s);
}
zval_ptr_dtor(&members);
RETURN_NULL();
} /* }}} */
@@ -1689,7 +1694,7 @@ SPL_METHOD(Array, serialize)
*/
SPL_METHOD(Array, unserialize)
{
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(getThis());
spl_array_object *intern = Z_SPLARRAY_P(getThis());
char *buf;
int buf_len;