Fix overloading for non-pointers and NULL - Ruby

This commit is contained in:
William S Fulton 2018-12-29 13:46:40 +00:00
commit d14c97408d
2 changed files with 53 additions and 1 deletions

View file

@ -0,0 +1,52 @@
#!/usr/bin/env ruby
#
# Put script description here.
#
#
#
#
#
require 'swig_assert'
require 'overload_null'
include Overload_null
o = Overload.new
x = X.new
swig_assert(1 == o.byval1(x))
swig_assert(2 == o.byval1(nil))
swig_assert(3 == o.byval2(nil))
swig_assert(4 == o.byval2(x))
swig_assert(5 == o.byref1(x))
swig_assert(6 == o.byref1(nil))
swig_assert(7 == o.byref2(nil))
swig_assert(8 == o.byref2(x))
swig_assert(9 == o.byconstref1(x))
swig_assert(10 == o.byconstref1(nil))
swig_assert(11 == o.byconstref2(nil))
swig_assert(12 == o.byconstref2(x))
# const pointer references
swig_assert(13 == o.byval1cpr(x))
swig_assert(14 == o.byval1cpr(nil))
swig_assert(15 == o.byval2cpr(nil))
swig_assert(16 == o.byval2cpr(x))
# forward class declaration
swig_assert(17 == o.byval1forwardptr(x))
swig_assert(18 == o.byval1forwardptr(nil))
swig_assert(19 == o.byval2forwardptr(nil))
swig_assert(20 == o.byval2forwardptr(x))
swig_assert(21 == o.byval1forwardref(x))
swig_assert(22 == o.byval2forwardref(x))

View file

@ -266,7 +266,7 @@ SWIG_Ruby_ConvertPtrAndOwn(VALUE obj, void **ptr, swig_type_info *ty, int flags,
if (NIL_P(obj)) {
if (ptr)
*ptr = 0;
return SWIG_OK;
return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK;
} else {
if (TYPE(obj) != T_DATA) {
return SWIG_ERROR;