Skip to content

Commit 6478088

Browse files
committed
Merge branch 'master' of https://github.com/php/php-src into string_size_refactor_take_2
Conflicts: Zend/zend_operators.h main/SAPI.h main/rfc1867.c main/streams/php_stream_transport.h main/streams/streams.c main/streams/transports.c main/streams/xp_socket.c
2 parents a95f8db + c5674bb commit 6478088

File tree

330 files changed

+3353
-1121
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

330 files changed

+3353
-1121
lines changed

Makefile.global

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ all: $(all_targets)
1010
@echo "Build complete."
1111
@echo "Don't forget to run 'make test'."
1212
@echo
13-
13+
1414
build-modules: $(PHP_MODULES) $(PHP_ZEND_EX)
1515

1616
build-binaries: $(PHP_BINARIES)
@@ -115,10 +115,19 @@ clean:
115115
find . -name \*.la -o -name \*.a | xargs rm -f
116116
find . -name \*.so | xargs rm -f
117117
find . -name .libs -a -type d|xargs rm -rf
118-
rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(OVERALL_TARGET) modules/* libs/*
118+
rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(SAPI_CGI_PATH) $(SAPI_MILTER_PATH) $(SAPI_LITESPEED_PATH) $(SAPI_FPM_PATH) $(OVERALL_TARGET) modules/* libs/*
119119

120120
distclean: clean
121-
rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h stamp-h sapi/apache/libphp$(PHP_MAJOR_VERSION).module buildmk.stamp
121+
rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h main/internal_functions_cli.c main/internal_functions.c stamp-h sapi/apache/libphp$(PHP_MAJOR_VERSION).module sapi/apache_hooks/libphp$(PHP_MAJOR_VERSION).module buildmk.stamp Zend/zend_dtrace_gen.h Zend/zend_dtrace_gen.h.bak Zend/zend_config.h TSRM/tsrm_config.h
122+
rm -f php5.spec main/build-defs.h scripts/phpize
123+
rm -f ext/date/lib/timelib_config.h ext/mbstring/oniguruma/config.h ext/mbstring/libmbfl/config.h ext/oci8/oci8_dtrace_gen.h ext/oci8/oci8_dtrace_gen.h.bak
124+
rm -f scripts/man1/phpize.1 scripts/php-config scripts/man1/php-config.1 sapi/cli/php.1 sapi/cgi/php-cgi.1 ext/phar/phar.1 ext/phar/phar.phar.1
125+
rm -f sapi/fpm/php-fpm.conf sapi/fpm/init.d.php-fpm sapi/fpm/php-fpm.service sapi/fpm/php-fpm.8 sapi/fpm/status.html
126+
rm -f ext/iconv/php_have_bsd_iconv.h ext/iconv/php_have_glibc_iconv.h ext/iconv/php_have_ibm_iconv.h ext/iconv/php_have_iconv.h ext/iconv/php_have_libiconv.h ext/iconv/php_iconv_aliased_libiconv.h ext/iconv/php_iconv_supports_errno.h ext/iconv/php_php_iconv_h_path.h ext/iconv/php_php_iconv_impl.h
127+
rm -f ext/phar/phar.phar ext/phar/phar.php
128+
if test "$(srcdir)" != "$(builddir)"; then \
129+
rm -f ext/phar/phar/phar.inc; \
130+
fi
122131
$(EGREP) define'.*include/php' $(top_srcdir)/configure | $(SED) 's/.*>//'|xargs rm -f
123132

124133
.PHONY: all clean install distclean test

NEWS

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ PHP NEWS
77
. Implemented internal operator overloading
88
(RFC: https://wiki.php.net/rfc/operator_overloading_gmp). (Nikita)
99

10+
- Session:
11+
. Fixed Bug #65315 (session.hash_function silently fallback to default md5)
12+
(Yasuo)
13+
. Implemented Request #54649 (Create session_serializer_name()). (Yasuo)
14+
. Implemented Request #17860 (Session write short circuit). (Yasuo)
15+
. Implemented Request #20421 (session_abort() and session_reset() function).
16+
(Yasuo)
17+
. Implemented Request #11100 (session_gc() function). (Yasuo)
18+
1019
- mysqlnd:
1120
. Disabled flag for SP OUT variables for 5.5+ servers as they are not natively
1221
supported by the overlying APIs. (Andrey)

README.STREAMS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ Opening Streams
4646
===============
4747
In most cases, you should use this API:
4848

49-
PHPAPI php_stream *php_stream_open_wrapper(char *path, char *mode,
49+
PHPAPI php_stream *php_stream_open_wrapper(const char *path, const char *mode,
5050
int options, char **opened_path TSRMLS_DC);
5151

5252
Where:

TSRM/tsrm_virtual_cwd.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1673,7 +1673,7 @@ CWD_API int virtual_creat(const char *path, mode_t mode TSRMLS_DC) /* {{{ */
16731673
}
16741674
/* }}} */
16751675

1676-
CWD_API int virtual_rename(char *oldname, char *newname TSRMLS_DC) /* {{{ */
1676+
CWD_API int virtual_rename(const char *oldname, const char *newname TSRMLS_DC) /* {{{ */
16771677
{
16781678
cwd_state old_state;
16791679
cwd_state new_state;

TSRM/tsrm_virtual_cwd.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ CWD_API char *virtual_realpath(const char *path, char *real_path TSRMLS_DC);
161161
CWD_API FILE *virtual_fopen(const char *path, const char *mode TSRMLS_DC);
162162
CWD_API int virtual_open(const char *path TSRMLS_DC, int flags, ...);
163163
CWD_API int virtual_creat(const char *path, mode_t mode TSRMLS_DC);
164-
CWD_API int virtual_rename(char *oldname, char *newname TSRMLS_DC);
164+
CWD_API int virtual_rename(const char *oldname, const char *newname TSRMLS_DC);
165165
CWD_API int virtual_stat(const char *path, struct stat *buf TSRMLS_DC);
166166
CWD_API int virtual_lstat(const char *path, struct stat *buf TSRMLS_DC);
167167
CWD_API int virtual_unlink(const char *path TSRMLS_DC);

UPGRADING

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,5 @@ PHP X.Y UPGRADE NOTES
9393
11. Other Changes
9494
========================================
9595

96+
- File upload:
97+
Uploads equal or greater than 2GB in size are now accepted.

UPGRADING.INTERNALS

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ UPGRADE NOTES - PHP X.Y
4848
========================
4949

5050
a. Unix build system changes
51-
-
51+
- The bison version check is now a blacklist instead of a whitelist.
52+
- The bison binary can be specified through the YACC environment/configure
53+
variable. Previously `bison` was assumed to be in $PATH.
5254

5355
b. Windows build system changes
5456
-

Zend/acinclude.m4

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,41 @@ dnl
33
dnl This file contains local autoconf functions.
44

55
AC_DEFUN([LIBZEND_BISON_CHECK],[
6-
# we only support certain bison versions
7-
bison_version_list="2.4 2.4.1 2.4.2 2.4.3 2.5 2.5.1 2.6 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.7"
6+
# we only support certain bison versions;
7+
# min: 2.4 (i.e. 204, major * 100 + minor for easier comparison)
8+
bison_version_min="204"
9+
# non-working versions, e.g. "3.0 3.2";
10+
# remove "none" when introducing the first incompatible bison version an
11+
# separate any following additions by spaces
12+
bison_version_exclude="none"
813
914
# for standalone build of Zend Engine
1015
test -z "$SED" && SED=sed
1116
1217
bison_version=none
1318
if test "$YACC"; then
1419
AC_CACHE_CHECK([for bison version], php_cv_bison_version, [
15-
bison_version_vars=`bison --version 2> /dev/null | grep 'GNU Bison' | cut -d ' ' -f 4 | $SED -e 's/\./ /' | tr -d a-z`
20+
bison_version_vars=`$YACC --version 2> /dev/null | grep 'GNU Bison' | cut -d ' ' -f 4 | $SED -e 's/\./ /g' | tr -d a-z`
1621
php_cv_bison_version=invalid
1722
if test -n "$bison_version_vars"; then
1823
set $bison_version_vars
1924
bison_version="${1}.${2}"
20-
for bison_check_version in $bison_version_list; do
21-
if test "$bison_version" = "$bison_check_version"; then
22-
php_cv_bison_version="$bison_check_version (ok)"
23-
break
24-
fi
25-
done
25+
bison_version_num="`expr ${1} \* 100 + ${2}`"
26+
if test $bison_version_num -ge $bison_version_min; then
27+
php_cv_bison_version="$bison_version (ok)"
28+
for bison_check_version in $bison_version_exclude; do
29+
if test "$bison_version" = "$bison_check_version"; then
30+
php_cv_bison_version=invalid
31+
break
32+
fi
33+
done
34+
fi
2635
fi
2736
])
2837
fi
2938
case $php_cv_bison_version in
3039
""|invalid[)]
31-
bison_msg="bison versions supported for regeneration of the Zend/PHP parsers: $bison_version_list (found: $bison_version)."
40+
bison_msg="This bison version is not supported for regeneration of the Zend/PHP parsers (found: $bison_version, min: $bison_version_min, excluded: $bison_version_exclude)."
3241
AC_MSG_WARN([$bison_msg])
3342
YACC="exit 0;"
3443
;;

Zend/tests/bug60771.phpt

Lines changed: 10 additions & 10 deletions
Large diffs are not rendered by default.

Zend/tests/bug65372.phpt

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
--TEST--
2+
Bug #65372 (Segfault in gc_zval_possible_root when return reference fails)
3+
--FILE--
4+
<?php
5+
6+
class ParentClass
7+
{
8+
private static $_OBJECTS;
9+
10+
public static function Get()
11+
{
12+
self::$_OBJECTS[1] = new ChildClass();
13+
return self::$_OBJECTS[1];
14+
}
15+
}
16+
17+
class ChildClass extends ParentClass
18+
{
19+
public $Manager;
20+
21+
function __construct()
22+
{
23+
$this->Manager = $this;
24+
}
25+
26+
public static function &GetCurrent()
27+
{
28+
return ChildClass::Get();
29+
}
30+
31+
public static function &Get()
32+
{
33+
return parent::Get();
34+
}
35+
}
36+
37+
$staff = ChildClass::GetCurrent();
38+
?>
39+
--EXPECTF--
40+
Notice: Only variable references should be returned by reference in %sbug65372.php on line 30

Zend/tests/traits/bugs/overridding-conflicting-methods.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
--TEST--
2-
Overridding Conflicting Methods should not result in a notice/warning about collisions
2+
Overriding Conflicting Methods should not result in a notice/warning about collisions
33
--FILE--
44
<?php
55
error_reporting(E_ALL);

Zend/zend_builtin_functions.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2381,7 +2381,7 @@ ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last, int
23812381
MAKE_STD_ZVAL(arg_array);
23822382
array_init(arg_array);
23832383

2384-
/* include_filename always points to the last filename of the last last called-fuction.
2384+
/* include_filename always points to the last filename of the last last called-function.
23852385
if we have called include in the frame above - this is the file we have included.
23862386
*/
23872387

Zend/zend_compile.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1734,7 +1734,7 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n
17341734
}
17351735

17361736
{
1737-
/* Push a seperator to the switch stack */
1737+
/* Push a separator to the switch stack */
17381738
zend_switch_entry switch_entry;
17391739

17401740
switch_entry.cond.op_type = IS_UNUSED;
@@ -1828,7 +1828,7 @@ void zend_do_end_function_declaration(const znode *function_token TSRMLS_DC) /*
18281828
CG(active_op_array) = function_token->u.op_array;
18291829

18301830

1831-
/* Pop the switch and foreach seperators */
1831+
/* Pop the switch and foreach separators */
18321832
zend_stack_del_top(&CG(switch_cond_stack));
18331833
zend_stack_del_top(&CG(foreach_copy_stack));
18341834
}
@@ -2671,7 +2671,7 @@ static int generate_free_foreach_copy(const zend_op *foreach_copy TSRMLS_DC) /*
26712671
{
26722672
zend_op *opline;
26732673

2674-
/* If we reach the seperator then stop applying the stack */
2674+
/* If we reach the separator then stop applying the stack */
26752675
if (foreach_copy->result_type == IS_UNUSED && foreach_copy->op1_type == IS_UNUSED) {
26762676
return 1;
26772677
}

Zend/zend_execute_API.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1055,7 +1055,7 @@ ZEND_API int zend_lookup_class_ex(const char *name, zend_str_size_int name_lengt
10551055
}
10561056

10571057
/* The compiler is not-reentrant. Make sure we __autoload() only during run-time
1058-
* (doesn't impact fuctionality of __autoload()
1058+
* (doesn't impact functionality of __autoload()
10591059
*/
10601060
if (!use_autoload || zend_is_compiling(TSRMLS_C)) {
10611061
if (!key) {

Zend/zend_globals.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ struct _zend_php_scanner_globals {
302302
unsigned char *script_filtered;
303303
size_t script_filtered_size;
304304

305-
/* input/ouput filters */
305+
/* input/output filters */
306306
zend_encoding_filter input_filter;
307307
zend_encoding_filter output_filter;
308308
const zend_encoding *script_encoding;

Zend/zend_language_scanner.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ typedef struct _zend_lex_state {
4545
unsigned char *script_filtered;
4646
size_t script_filtered_size;
4747

48-
/* input/ouput filters */
48+
/* input/output filters */
4949
zend_encoding_filter input_filter;
5050
zend_encoding_filter output_filter;
5151
const zend_encoding *script_encoding;

Zend/zend_operators.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -270,10 +270,10 @@ static inline zend_uchar is_numeric_string(const char *str, zend_str_size_int le
270270
}
271271

272272
static inline char *
273-
zend_memnstr(char *haystack, char *needle, zend_str_size_int needle_len, char *end)
273+
zend_memnstr(const char *haystack, const char *needle, zend_str_size_int needle_len, char *end)
274274
{
275-
char *p = haystack;
276-
char ne = needle[needle_len-1];
275+
const char *p = haystack;
276+
const char ne = needle[needle_len-1];
277277
ptrdiff_t off_p;
278278
zend_str_size_int off_s;
279279

Zend/zend_vm_def.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2684,7 +2684,7 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMP|VAR|CV)
26842684
if (call->object) {
26852685
Z_ADDREF_P(call->object);
26862686
}
2687-
if (OP2_TYPE == IS_VAR && OP2_FREE &&
2687+
if (OP2_TYPE == IS_VAR && OP2_FREE && Z_REFCOUNT_P(function_name) == 1 &&
26882688
call->fbc->common.fn_flags & ZEND_ACC_CLOSURE) {
26892689
/* Delay closure destruction until its invocation */
26902690
call->fbc->common.prototype = (zend_function*)function_name;
@@ -2925,9 +2925,12 @@ ZEND_VM_HANDLER(111, ZEND_RETURN_BY_REF, CONST|TMP|VAR|CV, ANY)
29252925
} else if (EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) {
29262926
zend_error(E_NOTICE, "Only variable references should be returned by reference");
29272927
if (EG(return_value_ptr_ptr)) {
2928-
retval_ptr = *retval_ptr_ptr;
2929-
*EG(return_value_ptr_ptr) = retval_ptr;
2930-
Z_ADDREF_P(retval_ptr);
2928+
zval *ret;
2929+
2930+
ALLOC_ZVAL(ret);
2931+
INIT_PZVAL_COPY(ret, *retval_ptr_ptr);
2932+
zval_copy_ctor(ret);
2933+
*EG(return_value_ptr_ptr) = ret;
29312934
}
29322935
break;
29332936
}

Zend/zend_vm_execute.h

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1267,7 +1267,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE
12671267
if (call->object) {
12681268
Z_ADDREF_P(call->object);
12691269
}
1270-
if (IS_CONST == IS_VAR && 0 &&
1270+
if (IS_CONST == IS_VAR && 0 && Z_REFCOUNT_P(function_name) == 1 &&
12711271
call->fbc->common.fn_flags & ZEND_ACC_CLOSURE) {
12721272
/* Delay closure destruction until its invocation */
12731273
call->fbc->common.prototype = (zend_function*)function_name;
@@ -1592,7 +1592,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_H
15921592
if (call->object) {
15931593
Z_ADDREF_P(call->object);
15941594
}
1595-
if (IS_TMP_VAR == IS_VAR && 1 &&
1595+
if (IS_TMP_VAR == IS_VAR && 1 && Z_REFCOUNT_P(function_name) == 1 &&
15961596
call->fbc->common.fn_flags & ZEND_ACC_CLOSURE) {
15971597
/* Delay closure destruction until its invocation */
15981598
call->fbc->common.prototype = (zend_function*)function_name;
@@ -1779,7 +1779,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_H
17791779
if (call->object) {
17801780
Z_ADDREF_P(call->object);
17811781
}
1782-
if (IS_VAR == IS_VAR && (free_op2.var != NULL) &&
1782+
if (IS_VAR == IS_VAR && (free_op2.var != NULL) && Z_REFCOUNT_P(function_name) == 1 &&
17831783
call->fbc->common.fn_flags & ZEND_ACC_CLOSURE) {
17841784
/* Delay closure destruction until its invocation */
17851785
call->fbc->common.prototype = (zend_function*)function_name;
@@ -2004,7 +2004,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HA
20042004
if (call->object) {
20052005
Z_ADDREF_P(call->object);
20062006
}
2007-
if (IS_CV == IS_VAR && 0 &&
2007+
if (IS_CV == IS_VAR && 0 && Z_REFCOUNT_P(function_name) == 1 &&
20082008
call->fbc->common.fn_flags & ZEND_ACC_CLOSURE) {
20092009
/* Delay closure destruction until its invocation */
20102010
call->fbc->common.prototype = (zend_function*)function_name;
@@ -2417,9 +2417,12 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CONST_HANDLER(ZEND_OPCODE_HAND
24172417
} else if (EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) {
24182418
zend_error(E_NOTICE, "Only variable references should be returned by reference");
24192419
if (EG(return_value_ptr_ptr)) {
2420-
retval_ptr = *retval_ptr_ptr;
2421-
*EG(return_value_ptr_ptr) = retval_ptr;
2422-
Z_ADDREF_P(retval_ptr);
2420+
zval *ret;
2421+
2422+
ALLOC_ZVAL(ret);
2423+
INIT_PZVAL_COPY(ret, *retval_ptr_ptr);
2424+
zval_copy_ctor(ret);
2425+
*EG(return_value_ptr_ptr) = ret;
24232426
}
24242427
break;
24252428
}
@@ -7742,9 +7745,12 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLE
77427745
} else if (EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) {
77437746
zend_error(E_NOTICE, "Only variable references should be returned by reference");
77447747
if (EG(return_value_ptr_ptr)) {
7745-
retval_ptr = *retval_ptr_ptr;
7746-
*EG(return_value_ptr_ptr) = retval_ptr;
7747-
Z_ADDREF_P(retval_ptr);
7748+
zval *ret;
7749+
7750+
ALLOC_ZVAL(ret);
7751+
INIT_PZVAL_COPY(ret, *retval_ptr_ptr);
7752+
zval_copy_ctor(ret);
7753+
*EG(return_value_ptr_ptr) = ret;
77487754
}
77497755
break;
77507756
}
@@ -12968,9 +12974,12 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLE
1296812974
} else if (EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) {
1296912975
zend_error(E_NOTICE, "Only variable references should be returned by reference");
1297012976
if (EG(return_value_ptr_ptr)) {
12971-
retval_ptr = *retval_ptr_ptr;
12972-
*EG(return_value_ptr_ptr) = retval_ptr;
12973-
Z_ADDREF_P(retval_ptr);
12977+
zval *ret;
12978+
12979+
ALLOC_ZVAL(ret);
12980+
INIT_PZVAL_COPY(ret, *retval_ptr_ptr);
12981+
zval_copy_ctor(ret);
12982+
*EG(return_value_ptr_ptr) = ret;
1297412983
}
1297512984
break;
1297612985
}
@@ -30624,9 +30633,12 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER
3062430633
} else if (EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) {
3062530634
zend_error(E_NOTICE, "Only variable references should be returned by reference");
3062630635
if (EG(return_value_ptr_ptr)) {
30627-
retval_ptr = *retval_ptr_ptr;
30628-
*EG(return_value_ptr_ptr) = retval_ptr;
30629-
Z_ADDREF_P(retval_ptr);
30636+
zval *ret;
30637+
30638+
ALLOC_ZVAL(ret);
30639+
INIT_PZVAL_COPY(ret, *retval_ptr_ptr);
30640+
zval_copy_ctor(ret);
30641+
*EG(return_value_ptr_ptr) = ret;
3063030642
}
3063130643
break;
3063230644
}

0 commit comments

Comments
 (0)