@@ -5806,14 +5806,15 @@ void zend_do_add_static_array_element(znode *result, znode *offset, const znode
58065806}
58075807/* }}} */
58085808
5809- void zend_do_add_list_element (const znode * element TSRMLS_DC ) /* {{{ */
5809+ void zend_do_add_list_element (const znode * element , zend_bool by_ref TSRMLS_DC ) /* {{{ */
58105810{
58115811 list_llist_element lle ;
58125812
58135813 if (element ) {
58145814 zend_check_writable_variable (element );
58155815
58165816 lle .var = * element ;
5817+ lle .by_ref = by_ref ;
58175818 zend_llist_copy (& lle .dimensions , & CG (dimension_llist ));
58185819 zend_llist_prepend_element (& CG (list_llist ), & lle );
58195820 }
@@ -5854,7 +5855,8 @@ void zend_do_list_end(znode *result, znode *expr TSRMLS_DC) /* {{{ */
58545855
58555856 le = CG (list_llist ).head ;
58565857 while (le ) {
5857- zend_llist * tmp_dimension_llist = & ((list_llist_element * )le -> data )-> dimensions ;
5858+ list_llist_element * ld = (list_llist_element * ) le -> data ;
5859+ zend_llist * tmp_dimension_llist = & ld -> dimensions ;
58585860 dimension = tmp_dimension_llist -> head ;
58595861 while (dimension ) {
58605862 opline = get_next_op (CG (active_op_array ) TSRMLS_CC );
@@ -5885,9 +5887,13 @@ void zend_do_list_end(znode *result, znode *expr TSRMLS_DC) /* {{{ */
58855887 GET_NODE (& last_container , opline -> result );
58865888 dimension = dimension -> next ;
58875889 }
5888- ((list_llist_element * ) le -> data )-> value = last_container ;
5889- zend_llist_destroy (& ((list_llist_element * ) le -> data )-> dimensions );
5890- zend_do_assign (result , & ((list_llist_element * ) le -> data )-> var , & ((list_llist_element * ) le -> data )-> value TSRMLS_CC );
5890+ ld -> value = last_container ;
5891+ zend_llist_destroy (& ld -> dimensions );
5892+ if (ld -> by_ref ) {
5893+ zend_do_assign_ref (result , & ld -> var , & ld -> value TSRMLS_CC );
5894+ } else {
5895+ zend_do_assign (result , & ld -> var , & ld -> value TSRMLS_CC );
5896+ }
58915897 zend_do_free (result TSRMLS_CC );
58925898 le = le -> next ;
58935899 }
0 commit comments