diff options
| -rw-r--r-- | lisp/progmodes/gdb-ui.el | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el index dfd32256d3c..0d3d29205ae 100644 --- a/lisp/progmodes/gdb-ui.el +++ b/lisp/progmodes/gdb-ui.el | |||
| @@ -493,7 +493,7 @@ With arg, use separate IO iff arg is positive." | |||
| 493 | (speedbar-change-initial-expansion-list "GUD")) | 493 | (speedbar-change-initial-expansion-list "GUD")) |
| 494 | (if (or (equal (nth 2 var) "0") | 494 | (if (or (equal (nth 2 var) "0") |
| 495 | (and (equal (nth 2 var) "1") | 495 | (and (equal (nth 2 var) "1") |
| 496 | (equal (nth 3 var) "char *"))) | 496 | (string-match "char \\*" (nth 3 var)))) |
| 497 | (gdb-enqueue-input | 497 | (gdb-enqueue-input |
| 498 | (list | 498 | (list |
| 499 | (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) | 499 | (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) |
| @@ -511,7 +511,7 @@ With arg, use separate IO iff arg is positive." | |||
| 511 | (defun gdb-var-evaluate-expression-handler (varnum changed) | 511 | (defun gdb-var-evaluate-expression-handler (varnum changed) |
| 512 | (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) | 512 | (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) |
| 513 | (goto-char (point-min)) | 513 | (goto-char (point-min)) |
| 514 | (re-search-forward ".*value=\\(\".+\"\\)" nil t) | 514 | (re-search-forward ".*value=\\(\".*\"\\)" nil t) |
| 515 | (catch 'var-found | 515 | (catch 'var-found |
| 516 | (let ((num 0)) | 516 | (let ((num 0)) |
| 517 | (dolist (var gdb-var-list) | 517 | (dolist (var gdb-var-list) |
| @@ -554,7 +554,7 @@ type=\"\\(.*?\\)\"") | |||
| 554 | (push varchild var-list) | 554 | (push varchild var-list) |
| 555 | (if (or (equal (nth 2 varchild) "0") | 555 | (if (or (equal (nth 2 varchild) "0") |
| 556 | (and (equal (nth 2 varchild) "1") | 556 | (and (equal (nth 2 varchild) "1") |
| 557 | (equal (nth 3 varchild) "char *"))) | 557 | (string-match "char \\*" (nth 3 varchild)))) |
| 558 | (gdb-enqueue-input | 558 | (gdb-enqueue-input |
| 559 | (list | 559 | (list |
| 560 | (concat | 560 | (concat |
| @@ -578,12 +578,19 @@ type=\"\\(.*?\\)\"") | |||
| 578 | (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) | 578 | (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) |
| 579 | (goto-char (point-min)) | 579 | (goto-char (point-min)) |
| 580 | (while (re-search-forward gdb-var-update-regexp nil t) | 580 | (while (re-search-forward gdb-var-update-regexp nil t) |
| 581 | (catch 'var-found-1 | ||
| 581 | (let ((varnum (match-string 1))) | 582 | (let ((varnum (match-string 1))) |
| 582 | (gdb-enqueue-input | 583 | (dolist (var gdb-var-list) |
| 583 | (list | 584 | (when (and (string-equal varnum (cadr var)) |
| 584 | (concat "server interpreter mi \"-var-evaluate-expression " | 585 | (or (equal (nth 2 var) "0") |
| 585 | varnum "\"\n") | 586 | (and (equal (nth 2 var) "1") |
| 586 | `(lambda () (gdb-var-evaluate-expression-handler ,varnum t))))))) | 587 | (string-match "char \\*" (nth 3 var))))) |
| 588 | (gdb-enqueue-input | ||
| 589 | (list | ||
| 590 | (concat "server interpreter mi \"-var-evaluate-expression " | ||
| 591 | varnum "\"\n") | ||
| 592 | `(lambda () (gdb-var-evaluate-expression-handler ,varnum t)))) | ||
| 593 | (throw 'var-found-1 nil))))))) | ||
| 587 | (setq gdb-pending-triggers | 594 | (setq gdb-pending-triggers |
| 588 | (delq 'gdb-var-update gdb-pending-triggers)) | 595 | (delq 'gdb-var-update gdb-pending-triggers)) |
| 589 | (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame)) | 596 | (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame)) |