Re: [CEDET-devel] Error calling semanticdb-create-ebrowse-database on VC++ headers
Brought to you by:
zappo
From: Alastair R. <ar...@in...> - 2008-11-19 21:50:53
|
Thanks for the help... From a bit of playing around I get the same error when file-truename is called on any non-existent file. It's not obvious to me what the correct return value should be in this case, but it's almost certainly not an args-out-of-range error! I'll chase this down on the windows emacs lists and see if it can be, or has been, fixed. Answers to your questions below: Eric M. Ludlam wrote: > Hi, > > I retraced the stack through my code, and it looks like a bug in > `file-truename'. I'm assuming this because the inputs to it look > valid, and even if I pass bogus stuff in to my version of > file-truename like that, it seems to work. A wild guess is that it is > because there are spaces in the default directory, though it worked > for me when I tried it. > > A way to find out is, if you have this stack active, you can press > "e" for eval, and get the output of: > > default-directory > - ie, is it the directory relative to the unknown proxy "c:/Program Files/Microsoft Visual Studio 8/VC/include/" > M-x find-function RET file-truename > > M-x eval-defun > > then reproduce it again. This will point out code in file-truename > with the issue. Partial stack trace: Debugger entered--Lisp error: (args-out-of-range "unknown-proxy.hh" 0 -1) substring("unknown-proxy.hh" 0 -17) (setq rest (substring filename 0 (* -1 ...))) (if longname (setq filename longname) (setq missing (concat "/" ...)) (setq rest (substring filename 0 ...)) (setq filename (concat ... missing))) (let ((longname ...) missing rest) (if longname (setq filename longname) (setq missing ...) (setq rest ...) (setq filename ...))) (if (string-match "[[*?]" filename) nil (let (... missing rest) (if longname ... ... ... ...))) (unless (string-match "[[*?]" filename) (let (... missing rest) (if longname ... ... ... ...))) (if handler (setq filename (funcall handler ... filename)) (unless (string-match "[[*?]" filename) (let ... ...))) (let ((handler ...)) (if handler (setq filename ...) (unless ... ...)) (setq done t)) (if (eq system-type (quote windows-nt)) (let (...) (if handler ... ...) (setq done t))) (let (done (file-name-handler-alist ...)) (or prev-dirs (setq prev-dirs ...)) (if (eq system-type ...) (let ... ... ...)) (while (not done) (setcar counter ...) (if ... ...) (let ... ...)) filename) file-truename("unknown-proxy.hh") (remainder of the stack trace seems to be similar to the previous one) |