Fixed infinite loop on enum.

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@859 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Dave Beazley 2000-09-19 16:40:54 +00:00
commit c5bc01c898
2 changed files with 7 additions and 4 deletions

View file

@ -987,11 +987,10 @@ statement : INCLUDE STRING LBRACE {
init_language(); init_language();
if ($3) { if ($3) {
if (temp_type) Delete(temp_type); if (temp_type) Delete(temp_type);
String *ts = NewStringf("enum %s", $3); temp_type = NewStringf("enum %s", $3);
/* String *ts = NewSwigType(T_INT); */ /* String *ts = NewSwigType(T_INT); */
SwigType_typedef(temp_type,ts); SwigType_typedef(temp_type,$3);
lang->add_typedef(temp_type,Char(ts)); lang->add_typedef(temp_type,$3);
Delete(ts);
} }
} }

View file

@ -1086,6 +1086,10 @@ static void init_scopes() {
int SwigType_typedef(SwigType *type, String_or_char *name) { int SwigType_typedef(SwigType *type, String_or_char *name) {
init_scopes(); init_scopes();
if (Getattr(scopes[scope_level],name)) return -1; if (Getattr(scopes[scope_level],name)) return -1;
if (Cmp(type,name) == 0) {
return 0;
}
Setattr(scopes[scope_level],name,type); Setattr(scopes[scope_level],name,type);
if (default_cache) if (default_cache)
Delattr(default_cache,type); Delattr(default_cache,type);