Fix overloading for non-pointers and NULL - Perl
This commit is contained in:
parent
d14c97408d
commit
b1178cf130
2 changed files with 45 additions and 1 deletions
44
Examples/test-suite/perl5/overload_null_runme.pl
Normal file
44
Examples/test-suite/perl5/overload_null_runme.pl
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Test::More tests => 24;
|
||||||
|
BEGIN { use_ok('overload_null') }
|
||||||
|
require_ok('overload_null');
|
||||||
|
|
||||||
|
my $o = new overload_null::Overload();
|
||||||
|
my $x = new overload_null::X();
|
||||||
|
|
||||||
|
is(1, $o->byval1($x));
|
||||||
|
is(2, $o->byval1(undef));
|
||||||
|
|
||||||
|
is(3, $o->byval2(undef));
|
||||||
|
is(4, $o->byval2($x));
|
||||||
|
|
||||||
|
is(5, $o->byref1($x));
|
||||||
|
is(6, $o->byref1(undef));
|
||||||
|
|
||||||
|
is(7, $o->byref2(undef));
|
||||||
|
is(8, $o->byref2($x));
|
||||||
|
|
||||||
|
is(9, $o->byconstref1($x));
|
||||||
|
is(10, $o->byconstref1(undef));
|
||||||
|
|
||||||
|
is(11, $o->byconstref2(undef));
|
||||||
|
is(12, $o->byconstref2($x));
|
||||||
|
|
||||||
|
# const pointer references
|
||||||
|
is(13, $o->byval1cpr($x));
|
||||||
|
is(14, $o->byval1cpr(undef));
|
||||||
|
|
||||||
|
is(15, $o->byval2cpr(undef));
|
||||||
|
is(16, $o->byval2cpr($x));
|
||||||
|
|
||||||
|
# forward class declaration
|
||||||
|
is(17, $o->byval1forwardptr($x));
|
||||||
|
is(18, $o->byval1forwardptr(undef));
|
||||||
|
|
||||||
|
is(19, $o->byval2forwardptr(undef));
|
||||||
|
is(20, $o->byval2forwardptr($x));
|
||||||
|
|
||||||
|
is(21, $o->byval1forwardref($x));
|
||||||
|
|
||||||
|
is(22, $o->byval2forwardref($x));
|
||||||
|
|
@ -277,7 +277,7 @@ SWIG_Perl_ConvertPtrAndOwn(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_
|
||||||
voidptr = INT2PTR(void *,tmp);
|
voidptr = INT2PTR(void *,tmp);
|
||||||
} else if (! SvOK(sv)) { /* Check for undef */
|
} else if (! SvOK(sv)) { /* Check for undef */
|
||||||
*(ptr) = (void *) 0;
|
*(ptr) = (void *) 0;
|
||||||
return SWIG_OK;
|
return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK;
|
||||||
} else if (SvTYPE(sv) == SVt_RV) { /* Check for NULL pointer */
|
} else if (SvTYPE(sv) == SVt_RV) { /* Check for NULL pointer */
|
||||||
if (!SvROK(sv)) {
|
if (!SvROK(sv)) {
|
||||||
/* In Perl 5.12 and later, SVt_RV == SVt_IV, so sv could be a valid integer value. */
|
/* In Perl 5.12 and later, SVt_RV == SVt_IV, so sv could be a valid integer value. */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue