]> granicus.if.org Git - php/commitdiff
Enable backwards reading in list command
authorBob Weinand <bobwei9@hotmail.com>
Mon, 25 Nov 2013 19:33:52 +0000 (20:33 +0100)
committerBob Weinand <bobwei9@hotmail.com>
Mon, 25 Nov 2013 19:33:52 +0000 (20:33 +0100)
phpdbg_list.c
phpdbg_prompt.c
phpdbg_utils.c

index 14ca56c1c3a57d3109aeb1a3eb9aab13fc36e343..05231bcf97f4b742bca6d9c47520d64f3b653fb7 100644 (file)
@@ -42,8 +42,9 @@ PHPDBG_LIST(lines) /* {{{ */
                case NUMERIC_PARAM:
                case EMPTY_PARAM:
                        phpdbg_list_file(phpdbg_current_file(TSRMLS_C),
-                               param->type == EMPTY_PARAM ? 0 : param->num,
-                               zend_get_executed_lineno(TSRMLS_C), 0 TSRMLS_CC);
+                               param->type == EMPTY_PARAM ? 0 : (param->num < 0 ? 1 - param->num : param->num),
+                               (param->type != EMPTY_PARAM && param->num < 0 ? param->num : 0) + zend_get_executed_lineno(TSRMLS_C),
+                               0 TSRMLS_CC);
                        break;
                case FILE_PARAM:
                        phpdbg_list_file(param->file.name, param->file.line, 0, 0 TSRMLS_CC);
index 679f52f95bef05977cdb10395d34a2080eaf0ac6..eff36f425397a3fd902554feb52f6a098f397b2e 100644 (file)
@@ -668,6 +668,10 @@ PHPDBG_COMMAND(back) /* {{{ */
                        zval **file, **line, **funcname, **class, **type, **args;
                        char is_class;
 
+                       if (limit < 0) {
+                               phpdbg_error("Invalid backtrace size %d", limit);
+                       }
+
                        zend_fetch_debug_backtrace(
                                &zbacktrace, 0, 0, limit TSRMLS_CC);
 
index 2c73f9b55b7a1a3d84edcecfe26f5c2210ae5872..5a922e8e533878a5960692b085d08b6131c0e60a 100644 (file)
@@ -69,7 +69,7 @@ PHPDBG_API int phpdbg_is_numeric(const char *str) /* {{{ */
         return 0;
 
        for (; *str; str++) {
-               if (isspace(*str)) {
+               if (isspace(*str) || *str == '-') {
                        continue;
                }
                return isdigit(*str);