From 9b3c9e12d20173bf7c1f659950cb6769dff8e299 Mon Sep 17 00:00:00 2001 From: Dave Beazley Date: Tue, 19 Sep 2000 16:40:54 +0000 Subject: [PATCH] Fixed infinite loop on enum. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@859 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Source/SWIG1.1/parser.yxx | 7 +++---- Source/Swig/stype.c | 4 ++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Source/SWIG1.1/parser.yxx b/Source/SWIG1.1/parser.yxx index a29fe5a63..f77a80963 100644 --- a/Source/SWIG1.1/parser.yxx +++ b/Source/SWIG1.1/parser.yxx @@ -987,11 +987,10 @@ statement : INCLUDE STRING LBRACE { init_language(); if ($3) { if (temp_type) Delete(temp_type); - String *ts = NewStringf("enum %s", $3); + temp_type = NewStringf("enum %s", $3); /* String *ts = NewSwigType(T_INT); */ - SwigType_typedef(temp_type,ts); - lang->add_typedef(temp_type,Char(ts)); - Delete(ts); + SwigType_typedef(temp_type,$3); + lang->add_typedef(temp_type,$3); } } diff --git a/Source/Swig/stype.c b/Source/Swig/stype.c index d3a817e06..6618ea7a6 100644 --- a/Source/Swig/stype.c +++ b/Source/Swig/stype.c @@ -1086,6 +1086,10 @@ static void init_scopes() { int SwigType_typedef(SwigType *type, String_or_char *name) { init_scopes(); if (Getattr(scopes[scope_level],name)) return -1; + if (Cmp(type,name) == 0) { + return 0; + } + Setattr(scopes[scope_level],name,type); if (default_cache) Delattr(default_cache,type);