%extend symbols for nested structs get into a wrong C symbol table
This commit is contained in:
parent
68347cb723
commit
665c4f581b
2 changed files with 15 additions and 6 deletions
|
|
@ -10,6 +10,7 @@
|
|||
char hi_extend() {
|
||||
return $self->c;
|
||||
}
|
||||
static const long swig_size = sizeof(hiA);
|
||||
}
|
||||
%extend lowA {
|
||||
lowA() {
|
||||
|
|
@ -21,6 +22,7 @@
|
|||
int low_extend() {
|
||||
return $self->num;
|
||||
}
|
||||
static const long swig_size = sizeof(lowA);
|
||||
}
|
||||
|
||||
%extend hiB {
|
||||
|
|
@ -32,6 +34,7 @@
|
|||
char hi_extend() {
|
||||
return $self->c;
|
||||
}
|
||||
static const long swig_size = sizeof(hiB);
|
||||
}
|
||||
%extend lowB {
|
||||
lowB() {
|
||||
|
|
@ -43,6 +46,7 @@
|
|||
int low_extend() {
|
||||
return $self->num;
|
||||
}
|
||||
static const long swig_size = sizeof(lowB);
|
||||
}
|
||||
|
||||
%extend FOO_bar {
|
||||
|
|
@ -50,6 +54,9 @@
|
|||
$self->d = 1;
|
||||
}
|
||||
};
|
||||
%extend NestedA {
|
||||
static const long swig_size = sizeof(NestedA);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -362,7 +362,15 @@ void Swig_nested_name_unnamed_c_structs(Node *n) {
|
|||
Delete(bases);
|
||||
}
|
||||
Setattr(classhash, name, c);
|
||||
|
||||
// Merge the extension into the symbol table
|
||||
if (Node *am = Getattr(Swig_extend_hash(), name)) {
|
||||
Swig_extend_merge(c, am);
|
||||
Swig_extend_append_previous(c, am);
|
||||
Delattr(Swig_extend_hash(), name);
|
||||
}
|
||||
Swig_symbol_popscope();
|
||||
|
||||
// process declarations following this type (assign correct new type)
|
||||
SwigType *ty = Copy(name);
|
||||
Node *decl = nextSibling(c);
|
||||
|
|
@ -376,12 +384,6 @@ void Swig_nested_name_unnamed_c_structs(Node *n) {
|
|||
decl = nextSibling(decl);
|
||||
}
|
||||
Delete(ty);
|
||||
if (Node *am = Getattr(Swig_extend_hash(), name)) {
|
||||
// Merge the extension into the symbol table
|
||||
Swig_extend_merge(c, am);
|
||||
Swig_extend_append_previous(c, am);
|
||||
Delattr(Swig_extend_hash(), name);
|
||||
}
|
||||
Swig_symbol_setscope(Swig_symbol_global_scope());
|
||||
add_symbols_c(c);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue