From: <wsf...@us...> - 2012-11-20 23:28:01
|
Revision: 13921 http://swig.svn.sourceforge.net/swig/?rev=13921&view=rev Author: wsfulton Date: 2012-11-20 23:27:54 +0000 (Tue, 20 Nov 2012) Log Message: ----------- Fix possible null dereferences in CFFI Modified Paths: -------------- trunk/Source/Modules/cffi.cxx Modified: trunk/Source/Modules/cffi.cxx =================================================================== --- trunk/Source/Modules/cffi.cxx 2012-11-20 20:06:21 UTC (rev 13920) +++ trunk/Source/Modules/cffi.cxx 2012-11-20 23:27:54 UTC (rev 13921) @@ -322,7 +322,7 @@ else Printf(args_placeholder, " %s", argname); - if (Strcmp(ffitype, lispify_name(parent, lispy_name(Char(Getattr(parent, "sym:name"))), "'classname")) == 0) + if (ffitype && Strcmp(ffitype, lispify_name(parent, lispy_name(Char(Getattr(parent, "sym:name"))), "'classname")) == 0) Printf(args_call, " (ff-pointer %s)", argname); else Printf(args_call, " %s", argname); @@ -458,10 +458,12 @@ String *actioncode = emit_action(n); String *result_convert = Swig_typemap_lookup_out("out", n, Swig_cresult_name(), f, actioncode); - Replaceall(result_convert, "$result", "lresult"); - Printf(f->code, "%s\n", result_convert); - if(!is_void_return) Printf(f->code, " return lresult;\n"); - Delete(result_convert); + if (result_convert) { + Replaceall(result_convert, "$result", "lresult"); + Printf(f->code, "%s\n", result_convert); + if(!is_void_return) Printf(f->code, " return lresult;\n"); + Delete(result_convert); + } emit_return_variable(n, Getattr(n, "type"), f); Printf(f->code, " } catch (...) {\n"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |