I'm trying to reverse an array but I keep getting bizarre results, such as
seg faults

0x00000000006d0940 in gc_remove_from_buffer (zv=0x7fffffffb550) at
/home/yaderbh/php-5.4.3/Zend/zend_gc.h:189
189 root->next->prev = root->prev;

or I'll get "PHP Fatal error:  Allowed memory size of" errors when trying
to manipulate the array in a script.

Basically what I'm doing is creating a pointer to zval, allocating and
creating the zval into an array, traversing the existing array and
calling add_index_zval. The position of the index is the current size and
work my way down.


    hash_table = Z_ARRVAL_P(intern->elements);



    ALLOC_INIT_ZVAL(new_elements);

    array_init(new_elements);



    zend_hash_internal_pointer_reset_ex(hash_table, &pos);



    i = intern->size;



    while (zend_hash_get_current_data_ex(hash_table, (void **)&current,
&pos) == SUCCESS) {
        tmp = **current;



        zval_copy_ctor(&tmp);



        add_index_zval(new_elements, i, &tmp);

        i--;



        zend_hash_move_forward_ex(hash_table, &pos);

    }



    zval_ptr_dtor(&intern->elements);



    intern->elements = new_elements;


Can anyone spot the problem?

Reply via email to