fix SEGV in XS::APItest::Backrefs::Comctl32Version()
authorDaniel Dragan <bulk88@hotmail.com>
Thu, 12 Apr 2018 18:53:09 +0000 (14:53 -0400)
committerTony Cook <tony@develop-help.com>
Tue, 17 Apr 2018 01:22:28 +0000 (11:22 +1000)
really old Mingw GCCs (3.4.5 specifically) dont implement _alloca
correctly, switch to a simpler variation

a follow on to perl #133084 and see also problems I had with alloca on
very old GCCs in https://rt.cpan.org/Public/Bug/Display.html?id=80217

ext/XS-APItest/APItest.pm
ext/XS-APItest/APItest.xs

index 8eda0f7..b98ccf8 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 use warnings;
 use Carp;
 
-our $VERSION = '0.96';
+our $VERSION = '0.97';
 
 require XSLoader;
 
index 1fead70..15b95eb 100644 (file)
@@ -6784,7 +6784,7 @@ Comctl32Version()
             croak("Comctl32Version: comctl32.dll no version???");
         ver = LoadResource(dll, hrsc);
         len = SizeofResource(dll, hrsc);
-        vercopy = _alloca(len);
+        vercopy = (void *)sv_grow(sv_newmortal(),len);
         memcpy(vercopy, ver, len);
         if (VerQueryValue(vercopy, "\\", (void**)&info, &len)) {
             int dwValueMS1 = (info->dwFileVersionMS>>16);