Patch #3260265 fixing overloading of non-primitive types and integers in Perl 5.12 and later
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12691 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
527c3e0552
commit
ea00ff974f
4 changed files with 26 additions and 3 deletions
|
|
@ -4,6 +4,10 @@ See the RELEASENOTES file for a summary of changes in each release.
|
||||||
|
|
||||||
Version 2.0.4 (in progress)
|
Version 2.0.4 (in progress)
|
||||||
===========================
|
===========================
|
||||||
|
2011-05-19: wsfulton
|
||||||
|
[Perl] Patch #3260265 fixing overloading of non-primitive types and integers in
|
||||||
|
Perl 5.12 and later.
|
||||||
|
|
||||||
2011-05-19: wsfulton
|
2011-05-19: wsfulton
|
||||||
[Ruby] Fix %import where one of the imported files %include one of the STL include
|
[Ruby] Fix %import where one of the imported files %include one of the STL include
|
||||||
files such as std_vector.i.
|
files such as std_vector.i.
|
||||||
|
|
|
||||||
|
|
@ -208,3 +208,9 @@ long long ll(long long ull) { return ull; }
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
%inline %{
|
||||||
|
int int_object(Spam *s) { return 999; }
|
||||||
|
int int_object(int c) { return c; }
|
||||||
|
%}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
use overload_simple;
|
use overload_simple;
|
||||||
use vars qw/$DOWARN/;
|
use vars qw/$DOWARN/;
|
||||||
use strict;
|
use strict;
|
||||||
use Test::More tests => 71;
|
use Test::More tests => 75;
|
||||||
|
|
||||||
pass("loaded");
|
pass("loaded");
|
||||||
|
|
||||||
|
|
@ -189,3 +189,10 @@ is(overload_simple::fid("3", 3), "fid:intint", "fid:fid(int,int)");
|
||||||
isnt(overload_simple::fbool(0), overload_simple::fbool(1), "fbool(bool)");
|
isnt(overload_simple::fbool(0), overload_simple::fbool(1), "fbool(bool)");
|
||||||
|
|
||||||
is(2, overload_simple::fbool(2), "fbool(int)");
|
is(2, overload_simple::fbool(2), "fbool(int)");
|
||||||
|
|
||||||
|
# int and object overload
|
||||||
|
|
||||||
|
is(overload_simple::int_object(1), 1, "int_object(1)");
|
||||||
|
is(overload_simple::int_object(0), 0, "int_object(0)");
|
||||||
|
is(overload_simple::int_object(undef), 999, "int_object(Spam*)");
|
||||||
|
is(overload_simple::int_object($s), 999, "int_object(Spam*)");
|
||||||
|
|
|
||||||
|
|
@ -274,8 +274,14 @@ SWIG_Perl_ConvertPtrAndOwn(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_
|
||||||
return SWIG_OK;
|
return 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. */
|
||||||
|
if (SvIOK(sv)) {
|
||||||
|
return SWIG_ERROR;
|
||||||
|
} else {
|
||||||
|
/* NULL pointer (reference to undef). */
|
||||||
*(ptr) = (void *) 0;
|
*(ptr) = (void *) 0;
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return SWIG_ERROR;
|
return SWIG_ERROR;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue