[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#2388: 23.0.90; wrong-type-argument in vc-dir
From: |
Dan Nicolaescu |
Subject: |
bug#2388: 23.0.90; wrong-type-argument in vc-dir |
Date: |
Tue, 10 Mar 2009 14:11:01 -0700 (PDT) |
robert marshall <robert.marshall@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)))