Define also Perl's calloc() macro
authorPali <pali@cpan.org>
Fri, 28 Sep 2018 11:17:01 +0000 (13:17 +0200)
committerTony Cook <tony@develop-help.com>
Mon, 29 Oct 2018 04:32:23 +0000 (15:32 +1100)
Functions malloc(), realloc() and free() are already redefined to
PerlMem_malloc(), PerlMem_realloc() and PerlMem_free(). But calloc() not.

This leads to the problem that memory by calloc() is allocated by system
C library, but freed by Perl's PerlMem_free() which just cause memory
corruptions.

XSUB.h

diff --git a/XSUB.h b/XSUB.h
index f637c91..796a13a 100644 (file)
--- a/XSUB.h
+++ b/XSUB.h
@@ -609,6 +609,7 @@ Rethrows a previously caught exception.  See L<perlguts/"Exception Handling">.
 #    define utime              PerlLIO_utime
 #    define write              PerlLIO_write
 #    define malloc             PerlMem_malloc
+#    define calloc              PerlMem_calloc
 #    define realloc            PerlMem_realloc
 #    define free               PerlMem_free
 #    define abort              PerlProc_abort