Ticket #164: patch-00upstream-b

File patch-00upstream-b, 1.1 kB (added by feldgendler, 2 years ago)

Patch to fix the bug

Line 
1 --- optimize.c.orig     2006-08-23 11:29:01.000000000 +0700
2 +++ optimize.c  2006-08-23 13:27:23.209631712 +0700
3 @@ -2754,6 +2756,7 @@
4                                         op->opcode = ZEND_JMP;
5                                         op->op1.u.opline_num = jmp_to->brk;
6                                         op->op2.op_type = IS_UNUSED;
7 +                                       op->extended_value = ZEND_BRK; /* Mark the opcode as former ZEND_BRK */
8                                         bb[op->op1.u.opline_num].start = &op_array->opcodes[jmp_to->brk];
9                                 }
10                                 else
11 @@ -2793,6 +2796,7 @@
12                                 op->opcode = ZEND_JMP;
13                                 op->op1.u.opline_num = jmp_to->cont;
14                                 op->op2.op_type = IS_UNUSED;
15 +                               op->extended_value = ZEND_CONT; /* Mark the opcode as former ZEND_CONT */
16                                 bb[op->op1.u.opline_num].start = &op_array->opcodes[jmp_to->cont];
17                                 }
18                                 else
19 @@ -2883,6 +2887,13 @@
20                         {
21                                 case ZEND_JMP:
22                                         p->jmp_1 = &bb[op->op1.u.opline_num];
23 +#ifdef ZEND_ENGINE_2
24 +                                       if (op->extended_value == ZEND_BRK || op->extended_value == ZEND_CONT)
25 +                                       {
26 +                                               /* This was a ZEND_BRK or ZEND_CONT opcode, see below */
27 +                                               p->follow = (innermost_ketchup > 0) ? &bb[innermost_ketchup] : &bb[len-1];
28 +                                       }
29 +#endif
30                                         break;
31                                 case ZEND_JMPZNZ:
32                                         p->jmp_2 = &bb[op->op2.u.opline_num];