summaryrefslogtreecommitdiff
path: root/Lib/mzscheme
diff options
context:
space:
mode:
authorWilliam S Fulton <wsf@fultondesigns.co.uk>2018-12-30 17:12:33 +0000
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2018-12-30 17:12:33 +0000
commit330201018a543cc8595e05a88ada717b2686e7aa (patch)
tree96b51ccf91a46d0edeb86058d3682beddb418615 /Lib/mzscheme
parentcbc1f7f1712831898c3a4c6d4c68158cf94e8389 (diff)
downloadswig-330201018a543cc8595e05a88ada717b2686e7aa.tar.gz
Fix overloading for non-pointers and NULL - MzScheme
Diffstat (limited to 'Lib/mzscheme')
-rw-r--r--Lib/mzscheme/mzrun.swg2
-rw-r--r--Lib/mzscheme/mzscheme.swg1
-rw-r--r--Lib/mzscheme/typemaps.i13
3 files changed, 13 insertions, 3 deletions
diff --git a/Lib/mzscheme/mzrun.swg b/Lib/mzscheme/mzrun.swg
index 06447d78d..c438c9ce8 100644
--- a/Lib/mzscheme/mzrun.swg
+++ b/Lib/mzscheme/mzrun.swg
@@ -158,7 +158,7 @@ SWIG_MzScheme_ConvertPtr(Scheme_Object *s, void **result, swig_type_info *type,
if (SCHEME_NULLP(s)) {
*result = NULL;
- return 0;
+ return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK;
} else if (SCHEME_TYPE(s) == swig_type) {
struct swig_mz_proxy *proxy = (struct swig_mz_proxy *) s;
if (type) {
diff --git a/Lib/mzscheme/mzscheme.swg b/Lib/mzscheme/mzscheme.swg
index 9ae242845..f45c87250 100644
--- a/Lib/mzscheme/mzscheme.swg
+++ b/Lib/mzscheme/mzscheme.swg
@@ -7,6 +7,7 @@
/* Include headers */
%runtime "swigrun.swg" // Common C API type-checking code
+%runtime "swigerrors.swg" // SWIG errors
%runtime "mzrun.swg"
%define SWIG_APPEND_VALUE(value)
diff --git a/Lib/mzscheme/typemaps.i b/Lib/mzscheme/typemaps.i
index 9346349bd..09bda2cca 100644
--- a/Lib/mzscheme/typemaps.i
+++ b/Lib/mzscheme/typemaps.i
@@ -329,7 +329,7 @@ REF_MAP(double, SCHEME_REALP, scheme_real_to_double,
$1 = (SCHEME_STRINGP($input)) ? 1 : 0;
}
-%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [] {
+%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE *, SWIGTYPE [] {
void *ptr;
if (SWIG_ConvertPtr($input, (void **) &ptr, $1_descriptor, 0)) {
$1 = 0;
@@ -338,9 +338,18 @@ REF_MAP(double, SCHEME_REALP, scheme_real_to_double,
}
}
+%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE &, SWIGTYPE && {
+ void *ptr;
+ if (SWIG_ConvertPtr($input, (void **) &ptr, $1_descriptor, SWIG_POINTER_NO_NULL)) {
+ $1 = 0;
+ } else {
+ $1 = 1;
+ }
+}
+
%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE {
void *ptr;
- if (SWIG_ConvertPtr($input, (void **) &ptr, $&1_descriptor, 0)) {
+ if (SWIG_ConvertPtr($input, (void **) &ptr, $&1_descriptor, SWIG_POINTER_NO_NULL)) {
$1 = 0;
} else {
$1 = 1;