Bug fixes in variable linking.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@741 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
48a1ee99ae
commit
227cacaa8e
1 changed files with 27 additions and 2 deletions
|
|
@ -774,14 +774,39 @@ PYTHON::link_variable(char *name, char *iname, SwigType *t) {
|
||||||
0);
|
0);
|
||||||
} else {
|
} else {
|
||||||
Printv(setf->code,
|
Printv(setf->code,
|
||||||
tab4, "if (", name, ") free(", name, ");\n",
|
tab4, "if (", name, ") free((char*)", name, ");\n",
|
||||||
tab4, name, " = (char *) malloc(strlen(tval)+1);\n",
|
tab4, name, " = (char *) malloc(strlen(tval)+1);\n",
|
||||||
tab4, "strcpy((char *)", name, ",tval);\n",
|
tab4, "strcpy((char *)", name, ",tval);\n",
|
||||||
0);
|
0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_POINTER: case T_ARRAY: case T_REFERENCE:
|
case T_ARRAY:
|
||||||
|
{
|
||||||
|
int setable = 0;
|
||||||
|
SwigType *aop;
|
||||||
|
SwigType *ta = Copy(t);
|
||||||
|
aop = SwigType_pop(ta);
|
||||||
|
if (SwigType_type(ta) == T_CHAR) {
|
||||||
|
String *dim = SwigType_array_getdim(aop,0);
|
||||||
|
if (dim && Len(dim)) {
|
||||||
|
Printf(setf->code, "strncpy(%s,PyString_AsString(val), %s);\n", name,dim);
|
||||||
|
setable = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!setable) {
|
||||||
|
Printv(setf->code,
|
||||||
|
tab4, "PyErr_SetString(PyExc_TypeError,\"Variable ", iname,
|
||||||
|
" is read-only.\");\n",
|
||||||
|
tab4, "return 1;\n",
|
||||||
|
0);
|
||||||
|
}
|
||||||
|
Delete(ta);
|
||||||
|
Delete(aop);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case T_POINTER: case T_REFERENCE:
|
||||||
Wrapper_add_localv(setf,"temp", SwigType_lstr(t,0), "temp",0);
|
Wrapper_add_localv(setf,"temp", SwigType_lstr(t,0), "temp",0);
|
||||||
get_pointer((char*)"val",(char*)"temp",t,setf->code,(char*)"1");
|
get_pointer((char*)"val",(char*)"temp",t,setf->code,(char*)"1");
|
||||||
Printv(setf->code,tab4, name, " = temp;\n", 0);
|
Printv(setf->code,tab4, name, " = temp;\n", 0);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue