Front page | perl.perl5.porters |
Postings from August 2001
[PATCH] [ID 20000519.006] Malloc coredump madness
From:
Wilson, Doug
Date:
August 23, 2001 19:31
Subject:
[PATCH] [ID 20000519.006] Malloc coredump madness
Message ID:
35A280DF784CD411A06B0008C7B130ADB55119@sdex04.sd.intuit.com
Well, I caught one of my own mistakes on my last post, so
here is an actual patch for review.
Whether or not the
first patch to handy.h is applied, please apply the second
patch to AUTHORS (this is a temp gig, no point in documenting
this address), thanks.
Is my_exit() the right thing to call. Is this any better than
letting perl core dump? 'Out of memory!' is a fatal error, we
could trap this and call something nicer (Perl_croak?).
--- handy.orig Thu Aug 23 18:20:19 2001
+++ handy.h Thu Aug 23 18:57:59 2001
@@ -575,14 +575,22 @@
#ifndef LEAKTEST
-#define New(x,v,n,t) (v = (t*)safemalloc((MEM_SIZE)((n)*sizeof(t))))
-#define Newc(x,v,n,t,c) (v =
(c*)safemalloc((MEM_SIZE)((n)*sizeof(t))))
-#define Newz(x,v,n,t) (v = (t*)safemalloc((MEM_SIZE)((n)*sizeof(t)))), \
- memzero((char*)(v), (n)*sizeof(t))
-#define Renew(v,n,t) \
- (v = (t*)saferealloc((Malloc_t)(v),(MEM_SIZE)((n)*sizeof(t))))
-#define Renewc(v,n,t,c) \
- (v = (c*)saferealloc((Malloc_t)(v),(MEM_SIZE)((n)*sizeof(t))))
+#define New(x,v,n,t) (((n) > (I32_MAX/sizeof(t))) \
+ ? (PerlIO_puts(Perl_error_log,PL_no_mem), my_exit(1), v) \
+ : (v = (t*)safemalloc((MEM_SIZE)((n)*sizeof(t)))))
+#define Newc(x,v,n,t,c) (((n) > (I32_MAX/sizeof(t))) \
+ ? (PerlIO_puts(Perl_error_log,PL_no_mem), my_exit(1), v) \
+ : (v = (c*)safemalloc((MEM_SIZE)((n)*sizeof(t)))))
+#define Newz(x,v,n,t) (((n) > (I32_MAX/sizeof(t))) \
+ ? (PerlIO_puts(Perl_error_log,PL_no_mem), my_exit(1), v) \
+ : ((v = (t*)safemalloc((MEM_SIZE)((n)*sizeof(t)))), \
+ memzero((char*)(v), (n)*sizeof(t))))
+#define Renew(v,n,t) (((n) > (I32_MAX/sizeof(t))) \
+ ? (PerlIO_puts(Perl_error_log,PL_no_mem), my_exit(1), v) \
+ : (v = (t*)saferealloc((Malloc_t)(v),(MEM_SIZE)((n)*sizeof(t)))))
+#define Renewc(v,n,t,c) (((n) > (I32_MAX/sizeof(t))) \
+ ? (PerlIO_puts(Perl_error_log,PL_no_mem), my_exit(1), v) \
+ : (v = (c*)saferealloc((Malloc_t)(v),(MEM_SIZE)((n)*sizeof(t)))))
#define Safefree(d) safefree((Malloc_t)(d))
#else /* LEAKTEST */
####################################################################
--- AUTHORS.orig Thu Aug 23 18:42:01 2001
+++ AUTHORS Thu Aug 23 18:42:40 2001
@@ -159,7 +159,7 @@
Dominique Dumont <Dominique_Dumont@grenoble.hp.com>
Doug Campbell <soup@ampersand.com>
Doug MacEachern <dougm@covalent.net>
-Doug Wilson <Doug_Wilson@intuit.com>
+Douglas Wilson <dougw@cpan.org>
Douglas E. Wegscheid <dwegscheid@qtm.net>
Douglas Lankshear <dougl@activestate.com>
Dov Grobgeld <dov@Orbotech.Co.IL>
-
[PATCH] [ID 20000519.006] Malloc coredump madness
by Wilson, Doug