@@ -611,24 +611,26 @@ SPL_METHOD(SplFixedArray, count)
611
611
SPL_METHOD (SplFixedArray , toArray )
612
612
{
613
613
spl_fixedarray_object * intern ;
614
- zval * ret , * tmp ;
615
- HashTable * ret_ht , * obj_ht ;
616
614
617
615
if (FAILURE == zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC , "" )) {
618
616
return ;
619
617
}
620
618
621
619
intern = (spl_fixedarray_object * )zend_object_store_get_object (getThis () TSRMLS_CC );
622
620
623
- ALLOC_HASHTABLE (ret_ht );
624
- zend_hash_init (ret_ht , 0 , NULL , ZVAL_PTR_DTOR , 0 );
625
- ALLOC_INIT_ZVAL (ret );
626
- Z_TYPE_P (ret ) = IS_ARRAY ;
627
- obj_ht = spl_fixedarray_object_get_properties (getThis () TSRMLS_CC );
628
- zend_hash_copy (ret_ht , obj_ht , (copy_ctor_func_t ) zval_add_ref , (void * ) & tmp , sizeof (zval * ));
629
- Z_ARRVAL_P (ret ) = ret_ht ;
630
-
631
- RETURN_ZVAL (ret , 1 , 1 );
621
+ array_init (return_value );
622
+ if (intern -> array ) {
623
+ int i = 0 ;
624
+ for (; i < intern -> array -> size ; i ++ ) {
625
+ if (intern -> array -> elements [i ]) {
626
+ zend_hash_index_update (Z_ARRVAL_P (return_value ), i , (void * )& intern -> array -> elements [i ], sizeof (zval * ), NULL );
627
+ Z_ADDREF_P (intern -> array -> elements [i ]);
628
+ } else {
629
+ zend_hash_index_update (Z_ARRVAL_P (return_value ), i , (void * )& EG (uninitialized_zval_ptr ), sizeof (zval * ), NULL );
630
+ Z_ADDREF_P (EG (uninitialized_zval_ptr ));
631
+ }
632
+ }
633
+ }
632
634
}
633
635
/* }}} */
634
636
0 commit comments