From a55739d3d02606d60f511b1ce558dd503b69acba Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sat, 28 Jul 2012 23:09:36 +0800 Subject: [PATCH] Fix bogus code in gdb-place-breakpoints. * progmodes/gdb-mi.el (gdb-place-breakpoints): Fix the call to gdb-get-location. --- lisp/ChangeLog | 5 +++++ lisp/progmodes/gdb-mi.el | 29 ++++++++++++++++------------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ac1482df4e1..635ecc054dd 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-07-28 Chong Yidong + + * progmodes/gdb-mi.el (gdb-place-breakpoints): Fix the call to + gdb-get-location. + 2012-07-25 Leo Liu * progmodes/cc-menus.el (cc-imenu-objc-function): Avoid leaving nil in diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index b19c828d171..f35951e0dda 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -2503,20 +2503,23 @@ HANDLER-NAME handler uses customization of CUSTOM-DEFUN. See (let ((file (bindat-get-field breakpoint 'fullname)) (flag (bindat-get-field breakpoint 'enabled)) (bptno (bindat-get-field breakpoint 'number))) - (unless (file-exists-p file) + (unless (and file (file-exists-p file)) (setq file (cdr (assoc bptno gdb-location-alist)))) - (if (and file - (not (string-equal file "File not found"))) - (with-current-buffer - (find-file-noselect file 'nowarn) - (gdb-init-buffer) - ;; Only want one breakpoint icon at each location. - (gdb-put-breakpoint-icon (string-equal flag "y") bptno - (string-to-number line))) - (gdb-input (concat "list " file ":1") 'ignore) - (gdb-input "-file-list-exec-source-file" - `(lambda () (gdb-get-location - ,bptno ,line ,flag))))))))) + (if (or (null file) + (string-equal file "File not found")) + ;; If the full filename is not recorded in the + ;; breakpoint structure or in `gdb-location-alist', use + ;; -file-list-exec-source-file to extract it. + (when (setq file (bindat-get-field breakpoint 'file)) + (gdb-input (concat "list " file ":1") 'ignore) + (gdb-input "-file-list-exec-source-file" + `(lambda () (gdb-get-location + ,bptno ,line ,flag)))) + (with-current-buffer (find-file-noselect file 'nowarn) + (gdb-init-buffer) + ;; Only want one breakpoint icon at each location. + (gdb-put-breakpoint-icon (string-equal flag "y") bptno + (string-to-number line))))))))) (defvar gdb-source-file-regexp "fullname=\"\\(.*?\\)\"") -- 2.11.4.GIT