Fixed reference/pointer typedef problem.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4825 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
f460723127
commit
c7480b9897
1 changed files with 14 additions and 3 deletions
|
|
@ -507,7 +507,6 @@ SwigType *SwigType_typedef_resolve(SwigType *t) {
|
||||||
String *namebase = 0;
|
String *namebase = 0;
|
||||||
String *nameprefix = 0;
|
String *nameprefix = 0;
|
||||||
int newtype = 0;
|
int newtype = 0;
|
||||||
static String *noscope = 0;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (!noscope) {
|
if (!noscope) {
|
||||||
|
|
@ -1247,10 +1246,11 @@ void SwigType_remember_clientdata(SwigType *t, const String_or_char *clientdata)
|
||||||
(*r_tracefunc)(t,mt, (String *) clientdata);
|
(*r_tracefunc)(t,mt, (String *) clientdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SwigType_istypedef(t))
|
if (SwigType_istypedef(t)) {
|
||||||
lt = Copy(t);
|
lt = Copy(t);
|
||||||
else
|
} else {
|
||||||
lt = SwigType_ltype(t);
|
lt = SwigType_ltype(t);
|
||||||
|
}
|
||||||
Setattr(r_ltype, mt, lt);
|
Setattr(r_ltype, mt, lt);
|
||||||
fr = SwigType_typedef_resolve_all(t); /* Create fully resolved type */
|
fr = SwigType_typedef_resolve_all(t); /* Create fully resolved type */
|
||||||
qr = SwigType_typedef_qualified(fr);
|
qr = SwigType_typedef_qualified(fr);
|
||||||
|
|
@ -1296,6 +1296,17 @@ void SwigType_remember_clientdata(SwigType *t, const String_or_char *clientdata)
|
||||||
Setattr(r_clientdata, fr, NewString(clientdata));
|
Setattr(r_clientdata, fr, NewString(clientdata));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If the remembered type is a reference, we also remember the pointer version.
|
||||||
|
This is to prevent odd problems with mixing pointers and references--especially
|
||||||
|
when different functions are using different typenames (via typedef). */
|
||||||
|
|
||||||
|
if (SwigType_isreference(t)) {
|
||||||
|
SwigType *tt = Copy(t);
|
||||||
|
SwigType_del_reference(tt);
|
||||||
|
SwigType_add_pointer(tt);
|
||||||
|
SwigType_remember_clientdata(tt,clientdata);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue