From: <ol...@us...> - 2009-03-30 02:22:19
|
Revision: 11176 http://swig.svn.sourceforge.net/swig/?rev=11176&view=rev Author: olly Date: 2009-03-30 02:22:14 +0000 (Mon, 30 Mar 2009) Log Message: ----------- The default out typemap for char[ANY] now returns up to a zero byte, or the end of the array if there is no zero byte. This is the same as Python does, and seems more generally useful than the previous behaviour of returning the whole contents of the array including any zero bytes. Modified Paths: -------------- trunk/Examples/test-suite/php/arrays_global_runme.php trunk/Lib/php/php.swg Modified: trunk/Examples/test-suite/php/arrays_global_runme.php =================================================================== --- trunk/Examples/test-suite/php/arrays_global_runme.php 2009-03-30 02:01:12 UTC (rev 11175) +++ trunk/Examples/test-suite/php/arrays_global_runme.php 2009-03-30 02:22:14 UTC (rev 11176) @@ -7,8 +7,14 @@ check::functions(array(test_a,test_b,new_simplestruct,new_material)); check::classes(array(arrays_global,SimpleStruct,Material)); check::globals(array(array_c,array_sc,array_uc,array_s,array_us,array_i,array_ui,array_l,array_ul,array_ll,array_f,array_d,array_struct,array_structpointers,array_ipointers,array_enum,array_enumpointers,array_const_i,beginstring_fix44a,beginstring_fix44b,beginstring_fix44c,beginstring_fix44d,beginstring_fix44e,beginstring_fix44f,chitmat,hitmat_val,hitmat)); -check::set(array_c,"hac"); -check::equal("ha",check::get(array_c,"ha"),"set array_c"); +// The size of array_c is 2, but the last byte is \0, so we can only store a +// single byte string in it. +check::set(array_c,"Z"); +check::equal("Z",check::get(array_c),"set array_c"); +check::set(array_c,"xy"); +check::equal("x",check::get(array_c),"set array_c"); +check::set(array_c,"h"); +check::equal("h",check::get(array_c),"set array_c"); check::done(); ?> Modified: trunk/Lib/php/php.swg =================================================================== --- trunk/Lib/php/php.swg 2009-03-30 02:01:12 UTC (rev 11175) +++ trunk/Lib/php/php.swg 2009-03-30 02:22:14 UTC (rev 11176) @@ -233,9 +233,11 @@ %typemap(out) void ""; %typemap(out) char [ANY] -%{ - RETVAL_STRINGL($1,$1_dim0,1); -%} +{ + int len = 0; + while (len < $1_dim0 && $1[len]) ++len; + RETVAL_STRINGL($1, len, 1); +} // This typecheck does hard checking for proper argument type. If you want // an argument to be converted from a different PHP type, you must convert This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |