]> granicus.if.org Git - php/commitdiff
Fix try/catch block logic
authorZeev Suraski <zeev@php.net>
Tue, 3 Feb 2004 13:42:41 +0000 (13:42 +0000)
committerZeev Suraski <zeev@php.net>
Tue, 3 Feb 2004 13:42:41 +0000 (13:42 +0000)
Zend/zend_execute.c

index ffaadaa133dab4c4c28d355493423a2438c454a4..a6e645ff559d9a0d3afa7436499edba8b2ba19c6 100644 (file)
@@ -4094,10 +4094,12 @@ int zend_handle_exception_handler(ZEND_OPCODE_HANDLER_ARGS)
        int encapsulating_block=-1;
        
        for (i=0; i<EG(active_op_array)->last_try_catch; i++) {
-               if (op_num >= EG(active_op_array)->try_catch_array[i].catch_op) {
+               if (EG(active_op_array)->try_catch_array[i].try_op > op_num) {
+                       /* further blocks will not be relevant... */
                        break;
                }
-               if (op_num >= EG(active_op_array)->try_catch_array[i].try_op) {
+               if (op_num >= EG(active_op_array)->try_catch_array[i].try_op
+                       && op_num < EG(active_op_array)->try_catch_array[i].catch_op) {
                        encapsulating_block = i;
                }
        }