php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Return to Bug #55695
Patch bug55695.diff revision 2011-09-14 15:32 UTC by laruence@php.net

Patch bug55695.diff for Scripting Engine problem Bug #55695

Patch version 2011-09-14 15:32 UTC

Return to Bug #55695 | 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);
 }
 /* }}} */
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Apr 28 13:01:29 2024 UTC