Merge pull request #1375 from tlby/issue-1374

repair uses of EXTEND() in Perl typemaps
This commit is contained in:
William S Fulton 2018-12-16 15:01:42 +00:00 committed by GitHub
commit e523556be3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 98 additions and 7 deletions

View file

@ -43,7 +43,7 @@
/* Perl types */
#define SWIG_Object SV *
#define VOID_Object sv_newmortal()
#define VOID_Object &PL_sv_undef
/* Perl $shadow flag */
#define %newpointer_flags $shadow
@ -56,7 +56,7 @@
%define %set_output(obj) $result = obj; argvi++ %enddef
/* append output */
%define %append_output(obj) if (argvi >= items) EXTEND(sp,1); %set_output(obj) %enddef
%define %append_output(obj) if (argvi >= items) EXTEND(sp, argvi+1); %set_output(obj) %enddef
/* variable output */
%define %set_varoutput(obj) sv_setsv($result,obj) %enddef

View file

@ -168,7 +168,7 @@ output values.
bool *OUTPUT, bool &OUTPUT
{
if (argvi >= items) {
EXTEND(sp,1);
EXTEND(sp, argvi+1);
}
$result = sv_newmortal();
sv_setiv($result,(IV) *($1));
@ -181,7 +181,7 @@ output values.
unsigned char *OUTPUT, unsigned char &OUTPUT
{
if (argvi >= items) {
EXTEND(sp,1);
EXTEND(sp, argvi+1);
}
$result = sv_newmortal();
sv_setuv($result,(UV) *($1));
@ -194,7 +194,7 @@ output values.
double *OUTPUT, double &OUTPUT
{
if (argvi >= items) {
EXTEND(sp,1);
EXTEND(sp, argvi+1);
}
$result = sv_newmortal();
sv_setnv($result,(double) *($1));
@ -204,7 +204,7 @@ output values.
%typemap(argout) long long *OUTPUT, long long &OUTPUT {
char temp[256];
if (argvi >= items) {
EXTEND(sp,1);
EXTEND(sp, argvi+1);
}
sprintf(temp,"%lld", (long long)*($1));
$result = sv_newmortal();
@ -215,7 +215,7 @@ output values.
%typemap(argout) unsigned long long *OUTPUT, unsigned long long &OUTPUT {
char temp[256];
if (argvi >= items) {
EXTEND(sp,1);
EXTEND(sp, argvi+1);
}
sprintf(temp,"%llu", (unsigned long long)*($1));
$result = sv_newmortal();