From: <wsf...@us...> - 2011-11-01 23:06:59
|
Revision: 12831 http://swig.svn.sourceforge.net/swig/?rev=12831&view=rev Author: wsfulton Date: 2011-11-01 23:06:53 +0000 (Tue, 01 Nov 2011) Log Message: ----------- Fix named output typemaps not being used when the symbol uses a qualifier and contains a number Modified Paths: -------------- trunk/CHANGES.current trunk/Examples/test-suite/typemap_various.i trunk/Source/Swig/symbol.c Modified: trunk/CHANGES.current =================================================================== --- trunk/CHANGES.current 2011-10-30 21:51:50 UTC (rev 12830) +++ trunk/CHANGES.current 2011-11-01 23:06:53 UTC (rev 12831) @@ -5,6 +5,12 @@ Version 2.0.5 (in progress) =========================== +2011-11-01: wsfulton + Fix named output typemaps not being used when the symbol uses a qualifier and contains + a number, eg: + + %typemap(out) double ABC::m1 "..." + 2011-10-24: talby [perl5] SF bug #3423119 - overload dispatch stack corruption fix. Better, but more research is needed on a stable path for tail calls in XS. Modified: trunk/Examples/test-suite/typemap_various.i =================================================================== --- trunk/Examples/test-suite/typemap_various.i 2011-10-30 21:51:50 UTC (rev 12830) +++ trunk/Examples/test-suite/typemap_various.i 2011-11-01 23:06:53 UTC (rev 12831) @@ -55,3 +55,20 @@ }; } + +// Test obscure bug where named typemaps where not being applied when symbol name contained a number +%typemap(out) double "_typemap_for_double_no_compile_" +%typemap(out) double ABC::meth "$1 = 0.0;" +%typemap(out) double ABC::m1 "$1 = 0.0;" +%typemap(out) double ABC::_x2 "$1 = 0.0;" +%typemap(out) double ABC::y_ "$1 = 0.0;" +%typemap(out) double ABC::_3 "$1 = 0.0;" +%inline %{ +struct ABC { + double meth() {} + double m1() {} + double _x2() {} + double y_() {} + double _3() {} +}; +%} Modified: trunk/Source/Swig/symbol.c =================================================================== --- trunk/Source/Swig/symbol.c 2011-10-30 21:51:50 UTC (rev 12830) +++ trunk/Source/Swig/symbol.c 2011-11-01 23:06:53 UTC (rev 12831) @@ -1749,8 +1749,9 @@ String *id = NewStringEmpty(); String *r = NewStringEmpty(); char *c = Char(s); + int first_char = 1; while (*c) { - if (isalpha((int) *c) || (*c == '_') || (*c == ':')) { + if (isalpha((int) *c) || (*c == '_') || (*c == ':') || (isdigit((int) *c) && !first_char)) { Putc(*c, id); have_id = 1; } else { @@ -1763,6 +1764,7 @@ } Putc(*c, r); } + first_char = (*c == ':'); c++; } if (have_id) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |