add missing goto fail when needed
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8587 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
ce684d16c0
commit
c198225f9d
3 changed files with 24 additions and 6 deletions
|
|
@ -851,6 +851,7 @@ public:
|
|||
tab4, "MAGIC_PPERL\n",
|
||||
NIL);
|
||||
|
||||
int addfail = 0;
|
||||
if ((tm = Swig_typemap_lookup_new("varout",n,name,0))) {
|
||||
SwigType *t = Getattr(n,"type");
|
||||
Replaceall(tm,"$target","sv");
|
||||
|
|
@ -862,13 +863,19 @@ public:
|
|||
Replaceall(tm, "$shadow", "0");
|
||||
}
|
||||
/* Printf(getf->code,"%s\n", tm);*/
|
||||
emit_action_code(n, getf, tm);
|
||||
addfail = emit_action_code(n, getf, tm);
|
||||
} else {
|
||||
Swig_warning(WARN_TYPEMAP_VAROUT_UNDEF, input_file, line_number,
|
||||
"Unable to read variable of type %s\n", SwigType_str(t,0));
|
||||
return SWIG_NOWRAP;
|
||||
}
|
||||
Printf(getf->code," return 1;\n}\n");
|
||||
Printf(getf->code," return 1;\n");
|
||||
if (addfail) {
|
||||
Append(getf->code,"fail:\n");
|
||||
Append(getf->code," return 0;\n");
|
||||
}
|
||||
Append(getf->code,"}\n");
|
||||
|
||||
|
||||
Replaceall(getf->code,"$symname",iname);
|
||||
Wrapper_print(getf,magic);
|
||||
|
|
|
|||
|
|
@ -1433,17 +1433,24 @@ public:
|
|||
Wrapper_add_local(getf,"_val","VALUE _val");
|
||||
|
||||
tm = Swig_typemap_lookup_new("varout",n, name, 0);
|
||||
int addfail = 0;
|
||||
if (tm) {
|
||||
Replaceall(tm,"$result","_val");
|
||||
Replaceall(tm,"$target","_val");
|
||||
Replaceall(tm,"$source",name);
|
||||
/* Printv(getf->code,tm, NIL); */
|
||||
emit_action_code(n, getf, tm);
|
||||
addfail = emit_action_code(n, getf, tm);
|
||||
} else {
|
||||
Swig_warning(WARN_TYPEMAP_VAROUT_UNDEF, input_file, line_number,
|
||||
"Unable to read variable of type %s\n", SwigType_str(t,0));
|
||||
}
|
||||
Printv(getf->code, tab4, "return _val;\n}\n", NIL);
|
||||
Printv(getf->code, tab4, "return _val;\n", NIL);
|
||||
if (addfail) {
|
||||
Append(getf->code,"fail:\n");
|
||||
Append(getf->code," return Qnil;\n");
|
||||
}
|
||||
Append(getf->code,"}\n");
|
||||
|
||||
Wrapper_print(getf,f_wrappers);
|
||||
|
||||
if (!is_assignable(n)) {
|
||||
|
|
|
|||
|
|
@ -578,18 +578,22 @@ public:
|
|||
getname = Swig_name_get(iname);
|
||||
Printv(getf->def,"SWIGINTERN char *",getname,"(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, char *name1, char *name2, int flags) {",NIL);
|
||||
Wrapper_add_local(getf,"value", "Tcl_Obj *value = 0");
|
||||
|
||||
int addfail = 0;
|
||||
if ((tm = Swig_typemap_lookup_new("varout",n,name,0))) {
|
||||
Replaceall(tm,"$source", name);
|
||||
Replaceall(tm,"$target","value");
|
||||
Replaceall(tm,"$result", "value");
|
||||
/* Printf(getf->code, "%s\n",tm); */
|
||||
emit_action_code(n, getf, tm);
|
||||
addfail = emit_action_code(n, getf, tm);
|
||||
Printf(getf->code, "if (value) {\n");
|
||||
Printf(getf->code, "Tcl_SetVar2(interp,name1,name2,Tcl_GetStringFromObj(value,NULL), flags);\n");
|
||||
Printf(getf->code, "Tcl_DecrRefCount(value);\n");
|
||||
Printf(getf->code, "}\n");
|
||||
Printf(getf->code, "return NULL;\n");
|
||||
if (addfail) {
|
||||
Append(getf->code,"fail:\n");
|
||||
Printf(getf->code,"return \"%s\";\n", iname);
|
||||
}
|
||||
Printf(getf->code,"}\n");
|
||||
Wrapper_print(getf,f_wrappers);
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue