]> granicus.if.org Git - php/commitdiff
Fix phpdbg class fetch / method opcodes
authorBob Weinand <bobwei9@hotmail.com>
Tue, 26 May 2015 22:55:15 +0000 (00:55 +0200)
committerBob Weinand <bobwei9@hotmail.com>
Tue, 26 May 2015 22:55:26 +0000 (00:55 +0200)
sapi/phpdbg/phpdbg_print.c
sapi/phpdbg/phpdbg_utils.c

index 11bfdf5a814cdebf11d1bb8864512135e089609c..4013c0fd88d9dd2a941ed357f1d6bb2b8746b0d6 100644 (file)
@@ -282,12 +282,13 @@ void phpdbg_print_opcodes_function(const char *function, size_t len) {
 }
 
 void phpdbg_print_opcodes_method(const char *class, const char *function) {
-       zend_class_entry *ce = zend_hash_str_find_ptr(EG(class_table), class, strlen(class));
+       zend_class_entry *ce;
        zend_function *func;
 
-       if (!ce) {
+       if (phpdbg_safe_class_lookup(class, strlen(class), &ce) != SUCCESS) {
                return;
        }
+
        if (ce->type != ZEND_USER_CLASS) {
                phpdbg_out("function name: %s::%s (internal)\n", class, function);
                return;
@@ -348,7 +349,6 @@ void phpdbg_print_opcodes_class(const char *class) {
 PHPDBG_API void phpdbg_print_opcodes(char *function)
 {
        char *method_name;
-
        strtok(function, ":");
 
        if (function == NULL) {
@@ -376,7 +376,7 @@ PHPDBG_API void phpdbg_print_opcodes(char *function)
                } ZEND_HASH_FOREACH_END();
        } else if ((method_name = strtok(NULL, ":")) == NULL) {
                phpdbg_print_opcodes_function(function, strlen(function));
-       } else if (++method_name == NULL || ++method_name == NULL) {
+       } else if ((method_name + 1) == NULL) {
                phpdbg_print_opcodes_class(function);
        } else {
                phpdbg_print_opcodes_method(function, method_name);
index 9d63fcf727fd93b5a95e28d6f1a349e5a8a1ba51..4cd8ce2782b531eae604e477cbd478a2477fd968 100644 (file)
@@ -384,7 +384,7 @@ int phpdbg_safe_class_lookup(const char *name, int name_length, zend_class_entry
                efree(str_name);
        }
 
-       return ce ? SUCCESS : FAILURE;
+       return *ce ? SUCCESS : FAILURE;
 }
 
 char *phpdbg_get_property_key(char *key) {