mainly for SF bug #3423119

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12828 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Robert Stone 2011-10-24 20:31:06 +00:00
commit fb9750698f
3 changed files with 19 additions and 5 deletions

View file

@ -5,6 +5,12 @@ See the RELEASENOTES file for a summary of changes in each release.
Version 2.0.5 (in progress)
===========================
2011-10-24: talby
[perl5] SF bug #3423119 - overload dispatch stack corruption fix. Better, but more research
is needed on a stable path for tail calls in XS.
Also, fix for large long longs in 32 bit perl.
2011-10-13: xavier98
[octave] Allow Octave modules to be re-loaded after a "clear all".

View file

@ -172,8 +172,12 @@ SWIG_From_dec(long long)(long long value)
SV *sv;
if (value >= IV_MIN && value <= IV_MAX)
sv = newSViv(value);
else
sv = newSVpvf("%lld", value);
else {
//sv = newSVpvf("%lld", value); doesn't work in non 64bit Perl
char temp[256];
sprintf(temp, "%lld", value);
sv = newSVpv(temp, 0);
}
return sv_2mortal(sv);
}
}
@ -245,8 +249,12 @@ SWIG_From_dec(unsigned long long)(unsigned long long value)
SV *sv;
if (value <= UV_MAX)
sv = newSVuv(value);
else
sv = newSVpvf("%llu", value);
else {
//sv = newSVpvf("%llu", value); doesn't work in non 64bit Perl
char temp[256];
sprintf(temp, "%llu", value);
sv = newSVpv(temp, 0);
}
return sv_2mortal(sv);
}
}

View file

@ -792,7 +792,7 @@ public:
} else if (!Getattr(n, "sym:nextSibling")) {
/* Generate overloaded dispatch function */
int maxargs;
String *dispatch = Swig_overload_dispatch_cast(n, "++PL_markstack_ptr; SWIG_CALLXS(%s); return;", &maxargs);
String *dispatch = Swig_overload_dispatch_cast(n, "PUSHMARK(MARK); SWIG_CALLXS(%s); return;", &maxargs);
/* Generate a dispatch wrapper for all overloaded functions */