]> granicus.if.org Git - php/commitdiff
Added ability to reset user opcode handlers (Yoram)
authorDmitry Stogov <dmitry@php.net>
Tue, 14 Feb 2012 09:27:08 +0000 (09:27 +0000)
committerDmitry Stogov <dmitry@php.net>
Tue, 14 Feb 2012 09:27:08 +0000 (09:27 +0000)
Zend/zend_execute.c

index 1798045bc9ddc442c670c2483325ba8110b2add8..d72fc7369aff7407c1f4029d762134db0bcf0def 100644 (file)
@@ -1512,7 +1512,12 @@ ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, int return_v
 ZEND_API int zend_set_user_opcode_handler(zend_uchar opcode, user_opcode_handler_t handler)
 {
        if (opcode != ZEND_USER_OPCODE) {
-               zend_user_opcodes[opcode] = ZEND_USER_OPCODE;
+               if (handler == NULL) {
+                       /* restore the original handler */                      
+                       zend_user_opcodes[opcode] = opcode;
+               } else {
+                       zend_user_opcodes[opcode] = ZEND_USER_OPCODE;
+               }
                zend_user_opcode_handlers[opcode] = handler;
                return SUCCESS;
        }