]> granicus.if.org Git - php/commitdiff
- Fix crash bug when opcodes array is erealloc()'ed to a different memory
authorAndi Gutmans <andi@php.net>
Fri, 11 May 2001 14:29:06 +0000 (14:29 +0000)
committerAndi Gutmans <andi@php.net>
Fri, 11 May 2001 14:29:06 +0000 (14:29 +0000)
  area before it reaches the loop.
- Some whitespace stuff

Zend/zend_opcode.c

index 9578e1dff503caededbce69a4a7f48080f7d11cc..e1fb6b3c37452cbcc969fd3f298558db70cc5be2 100644 (file)
@@ -274,7 +274,7 @@ static void zend_extension_op_array_handler(zend_extension *extension, zend_op_a
 
 int pass_two(zend_op_array *op_array)
 {
-       zend_op *opline=op_array->opcodes, *end=opline+op_array->last;
+       zend_op *opline, *end;
        CLS_FETCH();
 
        if (op_array->type!=ZEND_USER_FUNCTION && op_array->type!=ZEND_EVAL_CODE) {
@@ -286,12 +286,15 @@ int pass_two(zend_op_array *op_array)
        if (CG(handle_op_arrays)) {
                zend_llist_apply_with_argument(&zend_extensions, (void (*)(void *, void *)) zend_extension_op_array_handler, op_array);
        }
-       while (opline<end) {
-               if (opline->op1.op_type==IS_CONST) {
+
+       opline = op_array->opcodes;
+       end = opline + op_array->last;
+       while (opline < end) {
+               if (opline->op1.op_type == IS_CONST) {
                        opline->op1.u.constant.is_ref = 1;
                        opline->op1.u.constant.refcount = 2; /* Make sure is_ref won't be reset */
                }
-               if (opline->op2.op_type==IS_CONST) {
+               if (opline->op2.op_type == IS_CONST) {
                        opline->op2.u.constant.is_ref = 1;
                        opline->op2.u.constant.refcount = 2;
                }