bug-global
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

global -xsi seems wrong sometimes


From: 野田大樹
Subject: global -xsi seems wrong sometimes
Date: Sun, 15 Oct 2017 18:41:19 +0900

Hi.
I encountered the funny behavior in using GLOGAL.
Then I tried to patch it. Please check it.

------------------------------------------------
What is your environment (OS)?

$ uname -a
CYGWIN_NT-10.0-WOW muse 2.2.1(0.289/5/3) 2015-08-20 11:40 i686 Cygwin


------------------------------------------------
Which version of GLOBAL are you using?

$ global --version
global (GNU GLOBAL) 6.5.7
Copyright (c) 1996-2017 Tama Communications Corporation
License GPLv3+: GNU GPL version 3 or later
<http://www.gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.


------------------------------------------------
What did you do? (command line)

On the directory tree below:

    TestGtags
    |
    +-- Include
    |   |
    |   +-- TestGtags.h
    |         +------------------------
    |        1|enum A_MODE {
    |        2| a0,
    |        3| a1,
    |        4| a2,
    |        5|};
    |         +------------------------
    +-- Src
        |
        +-- TestGtags.cpp
              +------------------------
             1|#include <stdio.h>
             2|#include "TestGtags.h"
             3|
             4|void func()
             5|{
             6| A_MODE a_mode = a0;
             7| printf("a_mode=%d\n", a_mode);
             8|}
             9|
            10|int main(int argc, char* argv[])
            11|{
            12| func();
            13|
            14| A_MODE a_Mode = a1;
            15| printf("a_Mode=%d\n", a_Mode);
            16|
            17| return 0;
            18|}
              +------------------------

$ cd TestGtags
$ gtags
$ global -xsi a_mode


------------------------------------------------
What did you expect from it?

I expect global print locations like followings.

    a_Mode             14 Src/TestGtags.cpp         A_MODE a_Mode = a1;
    a_Mode             15 Src/TestGtags.cpp
printf("a_Mode=%d\n", a_Mode);
    a_mode              6 Src/TestGtags.cpp         A_MODE a_mode = a0;
    a_mode              7 Src/TestGtags.cpp
printf("a_mode=%d\n", a_mode);


------------------------------------------------
What was occurred? (as is)

Never print.


------------------------------------------------
Patch

I thought that -i option is not work correctly.
So, I wrote sample patch. Please check it.


$ diff -up libutil/gtagsop.c.6.5.7 libutil/gtagsop.c
--- libutil/gtagsop.c.6.5.7 2017-10-15 17:40:54.699199600 +0900
+++ libutil/gtagsop.c 2017-10-15 14:28:55.161333500 +0900
@@ -878,7 +878,17 @@ again1:
  else
  strhash_reset(gtop->path_hash);
 again2:
+#if 0
  tagline = dbop_first(gtop->dbop, gtop->key, gtop->preg, gtop->dbflags);
+#else
+ for (tagline = dbop_first(gtop->dbop, gtop->key, gtop->preg, gtop->dbflags);
+ tagline != NULL;
+ tagline = dbop_next(gtop->dbop))
+ {
+ VIRTUAL_GRTAGS_GSYMS_PROCESSING(gtop);
+ break;
+ }
+#endif
  if (tagline == NULL) {
  if (gtop->prefix && gtags_restart(gtop))
  goto again2;




Thanks.
--
Motoki NODA



reply via email to

[Prev in Thread] Current Thread [Next in Thread]