Subject: Re: bug#2388: 23.0.90; wrong-type-argument in vc-dir

From: robert marshall <[email-masked]>
Date: Tue, 10 Mar 2009 09:42:52 +0000

Nick Roberts wrote:
> Nick Roberts writes:
>  >  > > I can't reproduce this.
>  >  > > Can you please post step by step recipe of how you get this, starting
>  >  > > with emacs -Q. 
>  >  > > The output of 
>  >  > > svn -u status
>  >  > > in that directory might be helpful too.
>  >  > >   
>  >  > I can't reproduce this either now :-(
>  > 
>  > I have seen this sometimes when files have needed merging/updating.  I don't
>  > think it happened earlier because with SVN emacs didn't consult the remote
>  > repository by default:
>
> I still see this.  Here's a recent backtrace:
>
> Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
>   ewoc-data(nil)
>   (let ((data ...)) (or (vc-dir-fileinfo->directory data) 
> (file-name-directory ...)))
>   vc-dir-node-directory(nil)
>   (let* ((rd ...) (prev-node ...) (prev-dir ...)) (unless (string-equal 
> entrydir prev-dir) (ewoc-enter-before vc-ewoc node ...)))
>   (cond ((string-lessp nodedir entrydir) (setq node ...)) ((string-equal 
> nodedir entrydir) (let ... ...)) (t (let* ... ...) (ewoc-enter-before 
> vc-ewoc node ...) (setq entries ... entry ...)))
>   (let* ((entryfile ...) (entrydir ...) (nodedir ...)) (cond (... ...) 
> (... ...) (t ... ... ...)))
>   (while (and entry node) (let* (... ... ...) (cond ... ... ...)))
>   (let ((entry ...) (node ...) (dotname ...)) (unless node 
> (ewoc-enter-last vc-ewoc ...) (setq node ...)) (while (and entry node) 
> (let* ... ...)) (unless (or node noinsert) (let ... ...)))
>   (save-current-buffer (set-buffer buffer) (setq entries (sort entries 
> ...)) (let (... ... ...) (unless node ... ...) (while ... ...) (unless 
> ... ...)))
>   (with-current-buffer buffer (setq entries (sort entries ...)) (let 
> (... ... ...) (unless node ... ...) (while ... ...) (unless ... ...)))
>   vc-dir-update((("." needs-update) ("mydir" needs-update) 
> ("pom.xml" needs-update) ("mydir1/mydir2/myfile" needs-update) 
> ...
>
> which fails because node, i.e (ewoc-nth vc-ewoc 0), is nil.
>
>   
I'm seeing this, today, the status gives me

svn -u status
       *     7243   tests/compare.py
       *     7243   tests/harm.py
       *     7243   tests/setup-win.py
       *     7243   ipsa.i
       *     7243   Makefile
       *     7243   IscNetComponent.cpp
       *     7243   IscNetComparator.h
       *     7243   IpsaComparator.cpp
       *     7243   IscNetComponent.h
       *     7243   IscNetComparator.cpp
       *            IscCompareData.h
?                   ipsa_wrap.cpp
M      *     7243   IscInterface.cpp
?                   ipsa.py
       *            IscCompareData.cpp
       *     7243   Scripting.vcproj
       *     7243   .
Status against revision:   7248

I run emacs -Q and immediately

(vc-dir "/home/robert/IPSA/IPSA+1.6/Scripting/" nil)

and i get the following traceback
 ewoc-data(nil)
 vc-dir-node-directory(nil)
 vc-dir-update((("." needs-update) ("IpsaComparator.cpp" needs-update) 
("IscCompareData.cpp" needs-update) ("IscCompareData.h" needs-update) 
("IscInterface.cpp" needs-merge) ("IscNetComparator.cpp" needs-update) 
("IscNetComparator.h" needs-update) ("IscNetComponent.cpp" needs-update) 
("IscNetComponent.h" needs-update) ("Makefile" needs-update) 
("Scripting.vcproj" needs-update) ("ipsa.i" needs-update) ("ipsa.py" 
unregistered) ("ipsa_wrap.cpp" unregistered) ("tests/compare.py" 
needs-update) ("tests/harm.py" needs-update) ("tests/setup-win.py" 
needs-update)) #<buffer *vc-dir*>)
#[(G93901 entries &optional more-to-come) "rJqÆ J\"\n?'

Robert

-- 
Robert A J Marshall,  
TNEI Services Ltd, 86-90 London Road, Manchester, M1 2PW 
Registered in England & Wales No. 03891836,
Registered office:  Milburn House, Dean Street, Newcastle upon Tyne, NE1 1LE
tel: +44 161 615 6017; fax: +44 161 615 6001; mobile: +44 7759 688384 
web: http://IPSA-Power.com