@@ -42,7 +42,7 @@ static inline int msgpack_check_ht_is_map(zval *array) /* {{{ */ {
4242}
4343/* }}} */
4444
45- static inline int msgpack_var_add (HashTable * var_hash , zval * var , zval * * var_old ) /* {{{ */ {
45+ static inline int msgpack_var_add (HashTable * var_hash , zval * var , zend_long * var_old ) /* {{{ */ {
4646 uint32_t len ;
4747 char id [32 ], * p ;
4848 zval * var_noref , * var_exists , zv ;
@@ -68,14 +68,11 @@ static inline int msgpack_var_add(HashTable *var_hash, zval *var, zval **var_old
6868 }
6969
7070 if (var_old && (var_exists = zend_hash_str_find (var_hash , p , len )) != NULL ) {
71+ * var_old = Z_LVAL_P (var_exists );
7172 if (!Z_ISREF_P (var )) {
72- size_t offset = (char * )var_exists - (char * )var_hash -> arData ;
7373 ZVAL_LONG (& zv , -1 );
7474 zend_hash_next_index_insert (var_hash , & zv );
75- /* table maybe resized */
76- var_exists = (zval * )((char * )var_hash -> arData + offset );
7775 }
78- * var_old = var_exists ;
7976 return 0 ;
8077 }
8178
@@ -408,7 +405,7 @@ static inline void msgpack_serialize_object(smart_str *buf, zval *val, HashTable
408405
409406void msgpack_serialize_zval (smart_str * buf , zval * val , HashTable * var_hash ) /* {{{ */ {
410407 zval * val_noref ;
411- zval * var_already ;
408+ zend_long var_already ;
412409
413410 if (Z_TYPE_P (val ) == IS_INDIRECT ) {
414411 val = Z_INDIRECT_P (val );
@@ -423,7 +420,7 @@ void msgpack_serialize_zval(smart_str *buf, zval *val, HashTable *var_hash) /* {
423420 msgpack_pack_long (buf , MSGPACK_SERIALIZE_TYPE_RECURSIVE );
424421
425422 msgpack_pack_long (buf , 0 );
426- msgpack_pack_long (buf , Z_LVAL_P ( var_already ) );
423+ msgpack_pack_long (buf , var_already );
427424
428425 return ;
429426 } else if (Z_TYPE_P (Z_REFVAL_P (val )) == IS_OBJECT ) {
@@ -433,7 +430,7 @@ void msgpack_serialize_zval(smart_str *buf, zval *val, HashTable *var_hash) /* {
433430 msgpack_pack_long (buf , MSGPACK_SERIALIZE_TYPE_OBJECT_REFERENCE );
434431
435432 msgpack_pack_long (buf , 0 );
436- msgpack_pack_long (buf , Z_LVAL_P ( var_already ) );
433+ msgpack_pack_long (buf , var_already );
437434
438435 return ;
439436 }
@@ -444,7 +441,7 @@ void msgpack_serialize_zval(smart_str *buf, zval *val, HashTable *var_hash) /* {
444441 msgpack_pack_long (buf , MSGPACK_SERIALIZE_TYPE_OBJECT );
445442
446443 msgpack_pack_long (buf , 0 );
447- msgpack_pack_long (buf , Z_LVAL_P ( var_already ) );
444+ msgpack_pack_long (buf , var_already );
448445
449446 return ;
450447 }
0 commit comments