GNU bug report logs -
#2388
23.0.90; wrong-type-argument in vc-dir
Previous Next
Full log
Message #55 received at 2388-done <at> emacsbugs.donarmstrong.com (full text, mbox):
Dan Nicolaescu <dann <at> ics.uci.edu> writes:
> robert marshall <robert.marshall <at> tnei.co.uk> writes:
>
> > 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 .
> ^^^^^^^^^^^^^^^^^^^^^^^^
> This might be the cause of the problem. Can you please try thing
> patch:
>
>
> Index: vc-svn.el
> ===================================================================
> RCS file: /cvsroot/emacs/emacs/lisp/vc-svn.el,v
> retrieving revision 1.112
> diff -u -3 -p -u -p -r1.112 vc-svn.el
> --- vc-svn.el 10 Feb 2009 05:59:14 -0000 1.112
> +++ vc-svn.el 10 Mar 2009 20:49:23 -0000
> @@ -176,7 +176,7 @@ want to force an empty list of arguments
> ;; FIXME are there other possible combinations?
> (cond ((eq state 'edited) (setq state 'needs-merge))
> ((not state) (setq state 'needs-update))))
> - (when state
> + (when (and state (not (string= "." filename)))
> (setq result (cons (list filename state) result)))))
> (funcall callback result)))
After doing "svn update -rSOME_OLDER_VERSION" it seems that "." can
appear in the "svn status" output. So I applied this patch.
This bug report was last modified 16 years and 97 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.