From e7b400bc7d513ce56dc262abeccda4f8c321773d Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Sun, 19 Dec 2004 04:34:43 +0000 Subject: [PATCH] fix varin typemap git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@6896 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- SWIG/Examples/test-suite/common.mk | 1 + SWIG/Examples/test-suite/global_vars.i | 22 ++++++++++++++++++++++ SWIG/Lib/perl5/perl5.swg | 14 ++++++++------ 3 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 SWIG/Examples/test-suite/global_vars.i diff --git a/SWIG/Examples/test-suite/common.mk b/SWIG/Examples/test-suite/common.mk index 1aba24d7c..47789d6cc 100644 --- a/SWIG/Examples/test-suite/common.mk +++ b/SWIG/Examples/test-suite/common.mk @@ -140,6 +140,7 @@ CPP_TEST_CASES += \ features \ friends \ global_ns_arg \ + global_vars \ grouping \ ignore_parameter \ import_nomodule \ diff --git a/SWIG/Examples/test-suite/global_vars.i b/SWIG/Examples/test-suite/global_vars.i new file mode 100644 index 000000000..3788503f3 --- /dev/null +++ b/SWIG/Examples/test-suite/global_vars.i @@ -0,0 +1,22 @@ +%module global_vars + +%inline %{ + + + struct A + { + int x; + }; + + + A a; + A *ap; + const A *cap; + A &ar = a; + + int x; + int *xp; + void *vp; + + +%} diff --git a/SWIG/Lib/perl5/perl5.swg b/SWIG/Lib/perl5/perl5.swg index 17c903c7c..7d07587f3 100644 --- a/SWIG/Lib/perl5/perl5.swg +++ b/SWIG/Lib/perl5/perl5.swg @@ -245,7 +245,7 @@ %typemap(varin) SWIGTYPE * { void *temp; - if (SWIG_ConvertPtr($input, (void **) &$1, $1_descriptor,0) < 0) { + if (SWIG_ConvertPtr($input, &temp, $1_descriptor,0) < 0) { croak("Type error in argument $argnum of $symname. Expected $1_mangle"); } $1 = ($1_ltype) temp; @@ -268,25 +268,27 @@ %typemap(varin) SWIGTYPE & { void *temp; - if (SWIG_ConvertPtr($input, (void **) &temp, $1_descriptor,0) < 0) { + if (SWIG_ConvertPtr($input, &temp, $1_descriptor,0) < 0) { croak("Type error in argument $argnum of $symname. Expected $1_mangle"); } $1 = *($1_ltype) temp; } %typemap(varin) void * { - if (SWIG_ConvertPtr($input, (void **) &$1, 0,0) < 0) { + void *temp; + if (SWIG_ConvertPtr($input, &temp, 0,0) < 0) { croak("Type error in argument $argnum of $symname. Expected $1_mangle"); } + $1 = temp; } /* Object passed by value. Convert to a pointer */ %typemap(varin) SWIGTYPE { - $&1_ltype argp; - if (SWIG_ConvertPtr($input,(void **) &argp, $&1_descriptor,0) < 0) { + $&1_ltype temp; + if (SWIG_ConvertPtr($input,(void **) &temp, $&1_descriptor,0) < 0) { croak("Type error in argument $argnum of $symname. Expected $&1_mangle"); } - $1 = *argp; + $1 = *temp; } /* Member pointer */