Subject: Re: 23.1.50; wrong-type-argument stringp nil in gdb

From: Chong Yidong <[email-masked]>
Date: Mon, 26 Dec 2011 16:17:20 +0800

> Debugger entered--Lisp error: (wrong-type-argument stringp nil)
>   string-match("//+" nil)
>   gud-find-file(nil)
>   gud-display-line(nil 83)
>   gud-display-frame()
>   gdb-frame-handler()

Sorry for the long delay in replying.  I think this was a bug in the
`gdb-source' function of gdb-ui.el, which should be fixed with the
following patch.  But gdb-ui.el has since been replaced with a different
implementation, gdb-mi.el, in the trunk, which does not have this
problem.

*** lisp/progmodes/gdb-ui.el	2011-01-02 23:50:46 +0000
--- lisp/progmodes/gdb-ui.el	2011-12-26 08:15:50 +0000
***************
*** 1427,1442 ****
  
  ;; Do not use this except as an annotation handler.
  (defun gdb-source (args)
!   (string-match gdb-source-spec-regexp args)
!   ;; Extract the frame position from the marker.
!   (setq gud-last-frame
! 	(cons
! 	 (match-string 1 args)
! 	 (string-to-number (match-string 2 args))))
!   (setq gdb-pc-address (match-string 3 args))
!   ;; cover for auto-display output which comes *before*
!   ;; stopped annotation
!   (if (eq gdb-output-sink 'inferior) (setq gdb-output-sink 'user)))
  
  (defun gdb-pre-prompt (ignored)
    "An annotation handler for `pre-prompt'.
--- 1427,1442 ----
  
  ;; Do not use this except as an annotation handler.
  (defun gdb-source (args)
!   (when (string-match gdb-source-spec-regexp args)
!     ;; Extract the frame position from the marker.
!     (setq gud-last-frame
! 	  (cons
! 	   (match-string 1 args)
! 	   (string-to-number (match-string 2 args))))
!     (setq gdb-pc-address (match-string 3 args))
!     ;; cover for auto-display output which comes *before*
!     ;; stopped annotation
!     (if (eq gdb-output-sink 'inferior) (setq gdb-output-sink 'user))))
  
  (defun gdb-pre-prompt (ignored)
    "An annotation handler for `pre-prompt'.