Patch bug55673.diff for Scripting Engine problem Bug #55673
Patch version 2011-09-14 15:07 UTC
Return to Bug #55673 |
Download this patch
Patch Revisions:
Developer: laruence@php.net
Index: trunk/Zend/zend_compile.c
===================================================================
--- trunk/Zend/zend_compile.c (revision 316735)
+++ trunk/Zend/zend_compile.c (working copy)
@@ -4279,6 +4279,17 @@
}
/* }}} */
+static void zend_remove_opline(zend_op_array *op_array, zend_op *opline TSRMLS_DC) /* {{{ */
+{
+ zend_op *current = opline;
+ while (current < &(op_array->opcodes[op_array->last-1])) {
+ memcpy(current, current + 1, sizeof(zend_op));
+ current++;
+ }
+ op_array->last--;
+}
+/* }}} */
+
void zend_do_early_binding(TSRMLS_D) /* {{{ */
{
zend_op *opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1];
@@ -4349,7 +4360,7 @@
zend_hash_quick_del(table, Z_STRVAL(CONSTANT(opline->op1.constant)), Z_STRLEN(CONSTANT(opline->op1.constant)), Z_HASH_P(&CONSTANT(opline->op1.constant)));
zend_del_literal(CG(active_op_array), opline->op1.constant);
zend_del_literal(CG(active_op_array), opline->op2.constant);
- MAKE_NOP(opline);
+ zend_remove_opline(CG(active_op_array), opline TSRMLS_CC);
}
/* }}} */
Index: branches/PHP_5_3/Zend/zend_compile.c
===================================================================
--- branches/PHP_5_3/Zend/zend_compile.c (revision 316740)
+++ branches/PHP_5_3/Zend/zend_compile.c (working copy)
@@ -3044,6 +3044,17 @@
}
/* }}} */
+static void zend_remove_opline(zend_op_array *op_array, zend_op *opline TSRMLS_DC) /* {{{ */
+{
+ zend_op *current = opline;
+ while (current < &(op_array->opcodes[op_array->last-1])) {
+ memcpy(current, current + 1, sizeof(zend_op));
+ current++;
+ }
+ op_array->last--;
+}
+/* }}} */
+
void zend_do_early_binding(TSRMLS_D) /* {{{ */
{
zend_op *opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1];
@@ -3110,7 +3121,7 @@
zend_hash_del(table, opline->op1.u.constant.value.str.val, opline->op1.u.constant.value.str.len);
zval_dtor(&opline->op1.u.constant);
zval_dtor(&opline->op2.u.constant);
- MAKE_NOP(opline);
+ zend_remove_opline(CG(active_op_array), opline TSRMLS_CC);
}
/* }}} */
Index: branches/PHP_5_4/Zend/zend_compile.c
===================================================================
--- branches/PHP_5_4/Zend/zend_compile.c (revision 316735)
+++ branches/PHP_5_4/Zend/zend_compile.c (working copy)
@@ -4279,6 +4279,17 @@
}
/* }}} */
+static void zend_remove_opline(zend_op_array *op_array, zend_op *opline TSRMLS_DC) /* {{{ */
+{
+ zend_op *current = opline;
+ while (current < &(op_array->opcodes[op_array->last-1])) {
+ memcpy(current, current + 1, sizeof(zend_op));
+ current++;
+ }
+ op_array->last--;
+}
+/* }}} */
+
void zend_do_early_binding(TSRMLS_D) /* {{{ */
{
zend_op *opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1];
@@ -4349,7 +4360,7 @@
zend_hash_quick_del(table, Z_STRVAL(CONSTANT(opline->op1.constant)), Z_STRLEN(CONSTANT(opline->op1.constant)), Z_HASH_P(&CONSTANT(opline->op1.constant)));
zend_del_literal(CG(active_op_array), opline->op1.constant);
zend_del_literal(CG(active_op_array), opline->op2.constant);
- MAKE_NOP(opline);
+ zend_remove_opline(CG(active_op_array), opline TSRMLS_CC);
}
/* }}} */
|