Subject: bug#2388 closed by Dan Nicolaescu <[email-masked]> (Re: bug#2388: 23.0.90; wrong-type-argument in vc-dir)

From: [email-masked] (Emacs bug Tracking System)
Date: Wed, 15 Apr 2009 00:40:04 +0000

This is an automatic notification regarding your bug report
which was filed against the emacs,vc-dir package:

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

It has been closed by Dan Nicolaescu <[email-masked]>.

Their explanation is attached below along with your original report.
If this explanation is unsatisfactory and you have not received a
better one in a separate message then please contact Dan Nicolaescu <[email-masked]> by
replying to this email.

-- 
2388: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=2388
Emacs Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#2388: 23.0.90; wrong-type-argument in vc-dir
From: Dan Nicolaescu <[email-masked]>
To: [email-masked]
Cc: robert marshall <[email-masked]>
Date: Tue, 14 Apr 2009 17:30:16 -0700 (PDT)

Dan Nicolaescu <[email-masked]> writes:

  > robert marshall <[email-masked]> 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.

Subject: 23.0.90; wrong-type-argument in vc-dir
From: robert <[email-masked]>
To: [email-masked]
Date: Thu, 19 Feb 2009 14:21:16 +0000

If I run vc-dir in a svn controlled directory called 'Test Networks'
(with the internal space but not the quotes!), I get a wrong-type-argument
error, with the following traceback - 

Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
  ewoc-data(nil)
  vc-dir-node-directory(nil)

when I don't have debug-on-error set to t the *vc-dir* process never
completes.

In GNU Emacs 23.0.90.4 (i686-pc-linux-gnu, GTK+ Version 2.14.4)
 of 2009-02-16 on robert-laptop
Windowing system distributor `The X.Org Foundation', version 11.0.10502000
Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_GB.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t

Major mode: VC dir

Minor modes in effect:
  diff-auto-refine-mode: t
  desktop-save-mode: t
  shell-dirtrack-mode: t
  recentf-mode: t
  show-paren-mode: t
  tooltip-mode: t
  tool-bar-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  global-auto-composition-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t