avoid using of temporal value for wrapping type user + const reference argument
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@6895 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
e67b13b202
commit
aa048182d7
2 changed files with 31 additions and 2 deletions
|
|
@ -173,15 +173,24 @@ int Swig_cargs(Wrapper *w, ParmList *p) {
|
|||
if (tycode == T_REFERENCE) {
|
||||
if (pvalue) {
|
||||
SwigType *tvalue;
|
||||
String *defname, *defvalue, *rvalue;
|
||||
String *defname, *defvalue, *rvalue, *qvalue;
|
||||
rvalue = SwigType_typedef_resolve_all(pvalue);
|
||||
qvalue = SwigType_typedef_qualified(rvalue);
|
||||
defname = NewStringf("%s_defvalue", lname);
|
||||
tvalue = Copy(type);
|
||||
SwigType_del_reference(tvalue);
|
||||
defvalue = NewStringf("%s = %s", SwigType_lstr(tvalue,defname), rvalue);
|
||||
tycode = SwigType_type(tvalue);
|
||||
if (tycode != T_USER) {
|
||||
/* plain primitive type, we copy the the def value */
|
||||
defvalue = NewStringf("%s = %s", SwigType_lstr(tvalue,defname),qvalue);
|
||||
} else {
|
||||
/* user type, we copy the reference value */
|
||||
defvalue = NewStringf("%s = %s",SwigType_str(type,defname),qvalue);
|
||||
}
|
||||
Wrapper_add_localv(w,defname, defvalue, NIL);
|
||||
Delete(tvalue);
|
||||
Delete(rvalue);
|
||||
Delete(qvalue);
|
||||
Delete(defname);
|
||||
Delete(defvalue);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue