GNU bug report logs - #32
Bug in etags ".." code

Previous Next

Package: emacs;

Reported by: Tom Tromey <tromey <at> redhat.com>

Date: Mon, 3 Mar 2008 03:20:04 UTC

Severity: normal

Tags: patch

Merged with 735

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Tom Tromey <tromey <at> redhat.com>
To: bug-gnu-emacs <at> gnu.org
Subject: bug#32: Bug in etags ".." code
Date: Sun, 02 Mar 2008 17:02:48 -0700
I ran etags like this:

etags ./eval.c -o $(pwd)//.retags.d/Q

Note the double "/".

The resulting tags file contains this line:

../../eval.c,567

But this is wrong, there should be only a single "..".

I think relative_filename needs to handle the situation where multiple
"/"s appear consecutively.  The appended patch worked for me.

Tom

*** etags.c	07 Feb 2008 19:34:52 -0700	3.82
--- etags.c	02 Mar 2008 17:01:30 -0700	
***************
*** 6792,6799 ****
  
    /* Build a sequence of "../" strings for the resulting relative file name. */
    i = 0;
    while ((dp = etags_strchr (dp + 1, '/')) != NULL)
!     i += 1;
    res = xnew (3*i + strlen (fp + 1) + 1, char);
    res[0] = '\0';
    while (i-- > 0)
--- 6792,6805 ----
  
    /* Build a sequence of "../" strings for the resulting relative file name. */
    i = 0;
+   while (*dp == '/')
+     ++dp;
    while ((dp = etags_strchr (dp + 1, '/')) != NULL)
!     {
!       i += 1;
!       while (*dp == '/')
! 	++dp;
!     }
    res = xnew (3*i + strlen (fp + 1) + 1, char);
    res[0] = '\0';
    while (i-- > 0)





This bug report was last modified 15 years and 185 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.