1
0
mirror of https://github.com/php/php-src.git synced 2026-04-10 01:23:53 +02:00

- Commit experimental patch to fix the problem when doing $a = new foo()

and the constructor assigns $this by reference to other symbol table
  elements. Thanks to Daniel J. Rodriguez on this one.
This commit is contained in:
Andi Gutmans
2000-11-09 22:11:14 +00:00
parent ecaf64a362
commit d9d4824cd3
2 changed files with 11 additions and 1 deletions

View File

@@ -303,7 +303,15 @@ void zend_do_echo(znode *arg CLS_DC)
void zend_do_assign(znode *result, znode *variable, znode *value CLS_DC)
{
zend_op *opline = get_next_op(CG(active_op_array) CLS_CC);
zend_op *opline;
if (value->u.EA.type & EXT_TYPE_NEW_OP) {
value->u.EA.type &= ~EXT_TYPE_NEW_OP;
zend_do_assign_ref(result, variable, value CLS_CC);
return;
}
opline = get_next_op(CG(active_op_array) CLS_CC);
opline->opcode = ZEND_ASSIGN;
opline->result.op_type = IS_VAR;
@@ -1649,6 +1657,7 @@ void zend_do_begin_new_object(znode *new_token, znode *class_name CLS_DC)
opline->opcode = ZEND_NEW;
opline->result.op_type = IS_VAR;
opline->result.u.var = get_temporary_variable(CG(active_op_array));
opline->result.u.EA.type |= EXT_TYPE_NEW_OP;
opline->op1 = *class_name;
SET_UNUSED(opline->op2);

View File

@@ -204,6 +204,7 @@ typedef struct _zend_file_handle {
#define EXT_TYPE_UNUSED (1<<0)
#define EXT_TYPE_NEW_OP (1<<1)
#include "zend_globals.h"