zend_op *opline = get_next_op(CG(active_op_array) CLS_CC);
znode lval;
- if (fetch_type==ZEND_FETCH_STATIC) {
+ if (fetch_type==ZEND_FETCH_STATIC && static_assignment) {
zval *tmp = (zval *) emalloc(sizeof(zval));
convert_to_string(&varname->u.constant);
do_assign_ref(NULL, &lval, &opline->result CLS_CC);
+ CG(active_op_array)->opcodes[CG(active_op_array)->last-1].result.u.EA.type |= EXT_TYPE_UNUSED;
}
target_symbol_table = &EG(symbol_table);
break;
case ZEND_FETCH_STATIC:
+ if (!EG(active_op_array)->static_variables) {
+ EG(active_op_array)->static_variables = (HashTable *) emalloc(sizeof(HashTable));
+ zend_hash_init(EG(active_op_array)->static_variables, 2, NULL, PVAL_PTR_DTOR, 0);
+ }
target_symbol_table = EG(active_op_array)->static_variables;
break;
}