mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
Fixed incorrect initialization when copied op_array.vars was NULL (TRAITS)
This commit is contained in:
parent
9f66085649
commit
9a483afa5b
@ -3502,15 +3502,20 @@ static void zend_traits_duplicate_function(zend_function *fe, char *newname TSRM
|
|||||||
fe->op_array.refcount = emalloc(sizeof(zend_uint));
|
fe->op_array.refcount = emalloc(sizeof(zend_uint));
|
||||||
*(fe->op_array.refcount) = 1;
|
*(fe->op_array.refcount) = 1;
|
||||||
|
|
||||||
i = fe->op_array.last_var;
|
if (fe->op_array.vars) {
|
||||||
dupvars = safe_emalloc(fe->op_array.last_var, sizeof(zend_compiled_variable), 0);
|
i = fe->op_array.last_var;
|
||||||
while (i > 0) {
|
dupvars = safe_emalloc(fe->op_array.last_var, sizeof(zend_compiled_variable), 0);
|
||||||
i--;
|
while (i > 0) {
|
||||||
dupvars[i].name = estrndup(fe->op_array.vars[i].name, fe->op_array.vars[i].name_len);
|
i--;
|
||||||
dupvars[i].name_len = fe->op_array.vars[i].name_len;
|
dupvars[i].name = estrndup(fe->op_array.vars[i].name, fe->op_array.vars[i].name_len);
|
||||||
dupvars[i].hash_value = fe->op_array.vars[i].hash_value;
|
dupvars[i].name_len = fe->op_array.vars[i].name_len;
|
||||||
}
|
dupvars[i].hash_value = fe->op_array.vars[i].hash_value;
|
||||||
fe->op_array.vars = dupvars;
|
}
|
||||||
|
fe->op_array.vars = dupvars;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fe->op_array.vars = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
opcode_copy = safe_emalloc(sizeof(zend_op), fe->op_array.last, 0);
|
opcode_copy = safe_emalloc(sizeof(zend_op), fe->op_array.last, 0);
|
||||||
for(i = 0; i < fe->op_array.last; i++) {
|
for(i = 0; i < fe->op_array.last; i++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user