From: <wsf...@us...> - 2009-10-23 05:41:44
|
Revision: 11711 http://swig.svn.sourceforge.net/swig/?rev=11711&view=rev Author: wsfulton Date: 2009-10-23 05:41:33 +0000 (Fri, 23 Oct 2009) Log Message: ----------- Fix seg fault when using a named template instantiation using %template(name) within a class Modified Paths: -------------- trunk/CHANGES.current trunk/Doc/Manual/Warnings.html trunk/Examples/test-suite/common.mk trunk/Source/Include/swigwarn.h Added Paths: ----------- trunk/Examples/test-suite/java/template_nested_typemaps_runme.java trunk/Examples/test-suite/template_nested_typemaps.i Modified: trunk/CHANGES.current =================================================================== --- trunk/CHANGES.current 2009-10-23 05:33:28 UTC (rev 11710) +++ trunk/CHANGES.current 2009-10-23 05:41:33 UTC (rev 11711) @@ -1,6 +1,11 @@ Version 1.3.41 (in progress) ============================ +2009-10-23: wsfulton + Fix seg fault when using a named nested template instantiation using %template(name) + within a class. A warning that these are not supported is now issued plus processing + continues as if no name was given. + 2009-10-20: wsfulton [Python] Fix std::vector<const T*>. This would previously compile, but not run correctly. Modified: trunk/Doc/Manual/Warnings.html =================================================================== --- trunk/Doc/Manual/Warnings.html 2009-10-23 05:33:28 UTC (rev 11710) +++ trunk/Doc/Manual/Warnings.html 2009-10-23 05:41:33 UTC (rev 11711) @@ -411,6 +411,8 @@ <li>320. Explicit template instantiation ignored. <li>321. <em>identifier</em> conflicts with a built-in name. <li>322. Redundant redeclaration of '<em>name</em>'. +<li>323. Recursive scope inheritance of '<em>name</em>'. +<li>324. Named nested template instantiations not supported. Processing as if no name was given to %template(). <li>350. operator new ignored. <li>351. operator delete ignored. <li>352. operator+ ignored. Modified: trunk/Examples/test-suite/common.mk =================================================================== --- trunk/Examples/test-suite/common.mk 2009-10-23 05:33:28 UTC (rev 11710) +++ trunk/Examples/test-suite/common.mk 2009-10-23 05:41:33 UTC (rev 11711) @@ -330,6 +330,7 @@ template_inherit_abstract \ template_int_const \ template_methods \ + template_nested_typemaps \ template_ns \ template_ns2 \ template_ns3 \ Added: trunk/Examples/test-suite/java/template_nested_typemaps_runme.java =================================================================== --- trunk/Examples/test-suite/java/template_nested_typemaps_runme.java (rev 0) +++ trunk/Examples/test-suite/java/template_nested_typemaps_runme.java 2009-10-23 05:41:33 UTC (rev 11711) @@ -0,0 +1,27 @@ +import template_nested_typemaps.*; + +public class template_nested_typemaps_runme { + + static { + try { + System.loadLibrary("template_nested_typemaps"); + } catch (UnsatisfiedLinkError e) { + System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e); + System.exit(1); + } + } + + public static void main(String argv[]) { + BreezeString b = new BreezeString(); + { + int v = 88; + short vTypemap = -99; + if (b.methodInt1(v) != v) throw new RuntimeException("failed"); + if (b.methodInt2(v) != vTypemap) throw new RuntimeException("failed"); + + if (template_nested_typemaps.globalInt1(v) != v) throw new RuntimeException("failed"); + if (template_nested_typemaps.globalInt2(v) != v) throw new RuntimeException("failed"); + } + } +} + Added: trunk/Examples/test-suite/template_nested_typemaps.i =================================================================== --- trunk/Examples/test-suite/template_nested_typemaps.i (rev 0) +++ trunk/Examples/test-suite/template_nested_typemaps.i 2009-10-23 05:41:33 UTC (rev 11711) @@ -0,0 +1,24 @@ +%module template_nested_typemaps + +template <typename T> struct Typemap { + %typemap(in) T { + $1 = -99; + } +}; + +%inline %{ +int globalInt1(int s) { return s; } + +template <typename T> struct Breeze { + int methodInt1(int s) { return s; } +#if defined(SWIG) + %template() Typemap<int>; +#endif + int methodInt2(int s) { return s; } // only this method should pick up the typemap within Typemap<int> + void takeIt(T t) {} +}; + +int globalInt2(int s) { return s; } +%} + +%template(BreezeString) Breeze<const char *>; Modified: trunk/Source/Include/swigwarn.h =================================================================== --- trunk/Source/Include/swigwarn.h 2009-10-23 05:33:28 UTC (rev 11710) +++ trunk/Source/Include/swigwarn.h 2009-10-23 05:41:33 UTC (rev 11711) @@ -84,6 +84,7 @@ #define WARN_PARSE_BUILTIN_NAME 321 #define WARN_PARSE_REDUNDANT 322 #define WARN_PARSE_REC_INHERITANCE 323 +#define WARN_PARSE_NESTED_TEMPLATE 324 #define WARN_IGNORE_OPERATOR_NEW 350 /* new */ #define WARN_IGNORE_OPERATOR_DELETE 351 /* delete */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |