GNU bug report logs - #2388
23.0.90; wrong-type-argument in vc-dir

Previous Next

Package: emacs;

Reported by: robert <robert.marshall <at> tnei.co.uk>

Date: Thu, 19 Feb 2009 14:30:05 UTC

Severity: normal

Merged with 2566

Done: Dan Nicolaescu <dann <at> ics.uci.edu>

Bug is archived. No further changes may be made.

Full log


Message #55 received at 2388-done <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Dan Nicolaescu <dann <at> ics.uci.edu>
To: 2388-done <at> debbugs.gnu.org
Cc: robert marshall <robert.marshall <at> tnei.co.uk>
Subject: Re: bug#2388: 23.0.90; wrong-type-argument in vc-dir
Date: Tue, 14 Apr 2009 17:30:16 -0700 (PDT)
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.