Skip to content

Commit a831499

Browse files
committed
Re-fix Bug #65372 (Segfault in gc_zval_possible_root when return reference fails)
Missed a zval_copy_ctor there
1 parent 47d66a0 commit a831499

File tree

2 files changed

+5
-0
lines changed

2 files changed

+5
-0
lines changed

Zend/zend_vm_def.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2914,6 +2914,7 @@ ZEND_VM_HANDLER(111, ZEND_RETURN_BY_REF, CONST|TMP|VAR|CV, ANY)
29142914

29152915
ALLOC_ZVAL(ret);
29162916
INIT_PZVAL_COPY(ret, *retval_ptr_ptr);
2917+
zval_copy_ctor(ret);
29172918
*EG(return_value_ptr_ptr) = ret;
29182919
}
29192920
break;

Zend/zend_vm_execute.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2328,6 +2328,7 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CONST_HANDLER(ZEND_OPCODE_HAND
23282328

23292329
ALLOC_ZVAL(ret);
23302330
INIT_PZVAL_COPY(ret, *retval_ptr_ptr);
2331+
zval_copy_ctor(ret);
23312332
*EG(return_value_ptr_ptr) = ret;
23322333
}
23332334
break;
@@ -6749,6 +6750,7 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLE
67496750

67506751
ALLOC_ZVAL(ret);
67516752
INIT_PZVAL_COPY(ret, *retval_ptr_ptr);
6753+
zval_copy_ctor(ret);
67526754
*EG(return_value_ptr_ptr) = ret;
67536755
}
67546756
break;
@@ -11063,6 +11065,7 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLE
1106311065

1106411066
ALLOC_ZVAL(ret);
1106511067
INIT_PZVAL_COPY(ret, *retval_ptr_ptr);
11068+
zval_copy_ctor(ret);
1106611069
*EG(return_value_ptr_ptr) = ret;
1106711070
}
1106811071
break;
@@ -27040,6 +27043,7 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER
2704027043

2704127044
ALLOC_ZVAL(ret);
2704227045
INIT_PZVAL_COPY(ret, *retval_ptr_ptr);
27046+
zval_copy_ctor(ret);
2704327047
*EG(return_value_ptr_ptr) = ret;
2704427048
}
2704527049
break;

0 commit comments

Comments
 (0)