Index: /trunk/processor/head.m4
===================================================================
--- /trunk/processor/head.m4	(revision 872)
+++ /trunk/processor/head.m4	(revision 873)
@@ -90,10 +90,6 @@
 	zend_uint cache_class_index;
 
-#ifndef NDEBUG
 	const zend_op_array    *active_op_array_src;
 	zend_op_array          *active_op_array_dst;
-#endif
-	const zend_op          *active_opcodes_src;
-	zend_op                *active_opcodes_dst;
 	const zend_class_entry *active_class_entry_src;
 	zend_class_entry       *active_class_entry_dst;
Index: /trunk/processor/processor.m4
===================================================================
--- /trunk/processor/processor.m4	(revision 872)
+++ /trunk/processor/processor.m4	(revision 873)
@@ -637,4 +637,6 @@
 #endif
 	IFCOPY(`
+		assert(processor->active_op_array_src);
+		assert(processor->active_op_array_dst);
 #ifdef ZEND_ENGINE_2_4
 		pushdef(`UNION_znode_op_literal', `
@@ -653,7 +655,7 @@
 #endif
 			case ZEND_JMP:
-				assert(Z_OP(src->op1).jmp_addr >= processor->active_opcodes_src && Z_OP(src->op1).jmp_addr - processor->active_opcodes_src < processor->active_op_array_src->last);
-				Z_OP(dst->op1).jmp_addr = processor->active_opcodes_dst + (Z_OP(src->op1).jmp_addr - processor->active_opcodes_src);
-				assert(Z_OP(dst->op1).jmp_addr >= processor->active_opcodes_dst && Z_OP(dst->op1).jmp_addr - processor->active_opcodes_dst < processor->active_op_array_dst->last);
+				assert(Z_OP(src->op1).jmp_addr >= processor->active_op_array_src->opcodes && Z_OP(src->op1).jmp_addr - processor->active_op_array_src->opcodes < processor->active_op_array_src->last);
+				Z_OP(dst->op1).jmp_addr = processor->active_op_array_dst->opcodes + (Z_OP(src->op1).jmp_addr - processor->active_op_array_src->opcodes);
+				assert(Z_OP(dst->op1).jmp_addr >= processor->active_op_array_dst->opcodes && Z_OP(dst->op1).jmp_addr - processor->active_op_array_dst->opcodes < processor->active_op_array_dst->last);
 				break;
 
@@ -665,7 +667,7 @@
 			case ZEND_JMP_SET:
 #endif
-				assert(Z_OP(src->op2).jmp_addr >= processor->active_opcodes_src && Z_OP(src->op2).jmp_addr - processor->active_opcodes_src < processor->active_op_array_src->last);
-				Z_OP(dst->op2).jmp_addr = processor->active_opcodes_dst + (Z_OP(src->op2).jmp_addr - processor->active_opcodes_src);
-				assert(Z_OP(dst->op2).jmp_addr >= processor->active_opcodes_dst && Z_OP(dst->op2).jmp_addr - processor->active_opcodes_dst < processor->active_op_array_dst->last);
+				assert(Z_OP(src->op2).jmp_addr >= processor->active_op_array_src->opcodes && Z_OP(src->op2).jmp_addr - processor->active_op_array_src->opcodes < processor->active_op_array_src->last);
+				Z_OP(dst->op2).jmp_addr = processor->active_op_array_dst->opcodes + (Z_OP(src->op2).jmp_addr - processor->active_op_array_src->opcodes);
+				assert(Z_OP(dst->op2).jmp_addr >= processor->active_op_array_dst->opcodes && Z_OP(dst->op2).jmp_addr - processor->active_op_array_dst->opcodes < processor->active_op_array_dst->last);
 				break;
 
@@ -687,4 +689,9 @@
 #endif
 DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
+	IFCOPY(`
+		processor->active_op_array_dst = dst;
+		processor->active_op_array_src = src;
+	')
+	{
 	IFRESTORE(`
 	const xc_op_array_info_t *op_array_info = &processor->active_op_array_infos_src[processor->active_op_array_index++];
@@ -820,19 +827,11 @@
 
 #ifdef ZEND_ENGINE_2_4
-	dnl before copying opcodes
+	dnl used when copying opcodes
 	STRUCT_ARRAY(last_literal, zend_literal, literals)
 	PROCESS(int, last_literal)
 #endif
 
-	pushdef(`AFTER_ALLOC', `IFCOPY(`
-#ifndef NDEBUG
-		processor->active_op_array_dst = dst;
-		processor->active_op_array_src = src;
-#endif
-		processor->active_opcodes_dst = dst->opcodes;
-		processor->active_opcodes_src = src->opcodes;
-	')')
+	dnl uses literals
 	STRUCT_ARRAY(last, zend_op, opcodes)
-	popdef(`AFTER_ALLOC')
 	PROCESS(zend_uint, last)
 #ifndef ZEND_ENGINE_2_4
@@ -962,4 +961,9 @@
 		}
 	')
+	}
+	IFCOPY(`
+		processor->active_op_array_dst = NULL;
+		processor->active_op_array_src = NULL;
+	')
 ')
 dnl }}}
Index: /trunk/processor/struct.m4
===================================================================
--- /trunk/processor/struct.m4	(revision 872)
+++ /trunk/processor/struct.m4	(revision 873)
@@ -214,6 +214,4 @@
 			popdef(`ARRAY_ELEMENT_COUNT')
 
-			ifdef(`AFTER_ALLOC', AFTER_ALLOC)
-
 			for (LOOPCOUNTER = 0;
 					ifelse(`$1', `', `SRC(`$3[LOOPCOUNTER]')',
@@ -233,6 +231,5 @@
 	else {
 		COPYNULL(`$3')
-		ifdef(`AFTER_ALLOC', AFTER_ALLOC)
-	}
-')
-dnl }}}
+	}
+')
+dnl }}}
