C/C++ parser cannot handle typedef of the form of 
 typedef enum tag_name TYPEDEF_NAME;
correctly. 
The attached patch corrects this bug.

diffstat:
 libparser/C.c   |    7 +++++--
 libparser/Cpp.c |    7 +++++--
 2 files changed, 10 insertions(+), 4 deletions(-)

=== example ===

$ cat -n b.c
     1  typedef enum { X } BAR, *BAZ;
     2  typedef enum foo { X } BAR, *BAZ;
     3  typedef enum foo BAR, *BAZ;

[ version 6.2 and current CVS version ]
$ global -f b.c
X                   1 b.c              typedef enum { X } BAR, *BAZ;
BAR                 1 b.c              typedef enum { X } BAR, *BAZ;
BAZ                 1 b.c              typedef enum { X } BAR, *BAZ;
foo                 2 b.c              typedef enum foo { X } BAR, *BAZ;
X                   2 b.c              typedef enum foo { X } BAR, *BAZ;
BAR                 2 b.c              typedef enum foo { X } BAR, *BAZ;
BAZ                 2 b.c              typedef enum foo { X } BAR, *BAZ;
$ global -frs b.c
foo                 3 b.c              typedef enum foo BAR, *BAZ;
BAR                 3 b.c              typedef enum foo BAR, *BAZ;
BAZ                 3 b.c              typedef enum foo BAR, *BAZ;

[ patched version ]
$ global -f b.c
X                   1 b.c              typedef enum { X } BAR, *BAZ;
BAR                 1 b.c              typedef enum { X } BAR, *BAZ;
BAZ                 1 b.c              typedef enum { X } BAR, *BAZ;
foo                 2 b.c              typedef enum foo { X } BAR, *BAZ;
X                   2 b.c              typedef enum foo { X } BAR, *BAZ;
BAR                 2 b.c              typedef enum foo { X } BAR, *BAZ;
BAZ                 2 b.c              typedef enum foo { X } BAR, *BAZ;
BAR                 3 b.c              typedef enum foo BAR, *BAZ;
BAZ                 3 b.c              typedef enum foo BAR, *BAZ;
$ global -frs b.c
foo                 3 b.c              typedef enum foo BAR, *BAZ;

-- 
Hideki IWAMOTO <[email protected]>

Attachment: 20120217-enum_typedef.patch
Description: Binary data

_______________________________________________
Bug-global mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-global

Reply via email to