Fix a SEGV when processing an interface file which pulls a template
from one nested namespace into another with "using" (SF bug #1218884). git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@9310 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
ea75f3a1c3
commit
353a0a59cc
1 changed files with 9 additions and 15 deletions
|
|
@ -329,7 +329,7 @@ SwigType_using_scope(Typetab *scope) {
|
||||||
}
|
}
|
||||||
flush_cache();
|
flush_cache();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
* SwigType_pop_scope()
|
* SwigType_pop_scope()
|
||||||
*
|
*
|
||||||
|
|
@ -338,20 +338,14 @@ SwigType_using_scope(Typetab *scope) {
|
||||||
* ----------------------------------------------------------------------------- */
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
Typetab *SwigType_pop_scope() {
|
Typetab *SwigType_pop_scope() {
|
||||||
Typetab *s, *s1;
|
Typetab *t, *old = current_scope;
|
||||||
s = Getattr(current_scope,k_parent);
|
t = Getattr(current_scope,k_parent);
|
||||||
if (!s) {
|
if (!t) t = global_scope;
|
||||||
current_scope = 0;
|
current_scope = t;
|
||||||
current_typetab = 0;
|
current_typetab = Getattr(t,k_typetab);
|
||||||
current_symtab = 0;
|
current_symtab = Getattr(t,k_symtab);
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
s1 = current_scope;
|
|
||||||
current_scope = s;
|
|
||||||
current_typetab = Getattr(s,k_typetab);
|
|
||||||
current_symtab = Getattr(s,k_symtab);
|
|
||||||
flush_cache();
|
flush_cache();
|
||||||
return s1;
|
return old;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
|
|
@ -1123,7 +1117,7 @@ int SwigType_typedef_using(String_or_char *name) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tt) {
|
if (tt) {
|
||||||
/* Using directive had it's own scope. We need to do create a new scope for it */
|
/* Using directive had its own scope. We need to create a new scope for it */
|
||||||
SwigType_new_scope(base);
|
SwigType_new_scope(base);
|
||||||
SwigType_inherit_scope(tt);
|
SwigType_inherit_scope(tt);
|
||||||
SwigType_pop_scope();
|
SwigType_pop_scope();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue