Reinstate PERL_MALLOC_WRAP for bcc32 on Win32
[p5sagit/p5-mst-13.2.git] / handy.h
diff --git a/handy.h b/handy.h
index 8cddbab..f7ffc28 100644 (file)
--- a/handy.h
+++ b/handy.h
@@ -24,7 +24,7 @@
 /*
 =head1 Handy Values
 
-=for apidoc AmU||Nullch 
+=for apidoc AmU||Nullch
 Null character pointer.
 
 =for apidoc AmU||Nullsv
@@ -59,7 +59,7 @@ Null SV pointer.
    g++ can be identified by __GNUG__.
    Andy Dougherty      February 2000
 */
-#ifdef __GNUG__        /* GNU g++ has bool built-in */
+#ifdef __GNUG__                /* GNU g++ has bool built-in */
 #  ifndef HAS_BOOL
 #    define HAS_BOOL 1
 #  endif
@@ -88,7 +88,9 @@ Null SV pointer.
 #endif
 
 /* Try to figure out __func__ or __FUNCTION__ equivalent, if any.
- * XXX Should really be a Configure probe. */
+ * XXX Should really be a Configure probe, with HAS__FUNCTION__
+ *     and FUNCTION__ as results.
+ * XXX Similarly, a Configure probe for __FILE__ and __LINE__ is needed. */
 #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || (defined(__SUNPRO_C)) /* C99 or close enough. */
 #  define FUNCTION__ __func__
 #else
@@ -120,11 +122,11 @@ Null SV pointer.
    For dealing with issues that may arise from various 32/64-bit
    systems, we will ask Configure to check out
 
-       SHORTSIZE == sizeof(short)
-       INTSIZE == sizeof(int)
-       LONGSIZE == sizeof(long)
+       SHORTSIZE == sizeof(short)
+       INTSIZE == sizeof(int)
+       LONGSIZE == sizeof(long)
        LONGLONGSIZE == sizeof(long long) (if HAS_LONG_LONG)
-       PTRSIZE == sizeof(void *)
+       PTRSIZE == sizeof(void *)
        DOUBLESIZE == sizeof(double)
        LONG_DOUBLESIZE == sizeof(long double) (if HAS_LONG_DOUBLE).
 
@@ -420,7 +422,7 @@ Converts the specified character to lowercase.
 
 #  else
 
-#    define isALNUM_LC(c)      (isascii(c) && (isalnum(c) || (c) == '_'))
+#    define isALNUM_LC(c)      (isascii(c) && (isalnum(c) || (c) == '_'))
 #    define isIDFIRST_LC(c)    (isascii(c) && (isalpha(c) || (c) == '_'))
 #    define isALPHA_LC(c)      (isascii(c) && isalpha(c))
 #    define isSPACE_LC(c)      (isascii(c) && isspace(c))
@@ -550,18 +552,19 @@ C<id> is an integer id between 0 and 1299 (used to identify leaks).
 =for apidoc Am|void|Newx|void* ptr|int nitems|type
 The XSUB-writer's interface to the C C<malloc> function.
 
+In 5.9.3, Newx() and friends replace the older New() API, and drops
+the first parameter, I<x>, a debug aid which allowed callers to identify
+themselves.  This aid has been superceded by a new build option,
+PERL_MEM_LOG (see L<perlhack/PERL_MEM_LOG>).  The older API is still
+there for use in XS modules supporting older perls.
+
 =for apidoc Am|void|Newxc|void* ptr|int nitems|type|cast
 The XSUB-writer's interface to the C C<malloc> function, with
-cast.
+cast.  See also C<Newx>.
 
 =for apidoc Am|void|Newxz|void* ptr|int nitems|type
 The XSUB-writer's interface to the C C<malloc> function.  The allocated
-memory is zeroed with C<memzero>.
-
-In 5.9.3, we removed the 1st parameter, a debug aid, from the api.  It
-was used to uniquely identify each usage of these allocation
-functions, but was deemed unnecessary with the availability of better
-memory tracking tools, valgrind for example.
+memory is zeroed with C<memzero>.  See also C<Newx>.
 
 =for apidoc Am|void|Renew|void* ptr|int nitems|type
 The XSUB-writer's interface to the C C<realloc> function.
@@ -638,13 +641,13 @@ hopefully catches attempts to access uninitialized memory.
 
 #ifdef PERL_MEM_LOG
 /*
- * If PERL_MEM_LOG is defined, all New()s, Renew()s, and Safefree()s
+ * If PERL_MEM_LOG is defined, all Newx()s, Renew()s, and Safefree()s
  * go through functions, which are handy for debugging breakpoints, but
  * which more importantly get the immediate calling environment (file and
- * line number) passed in.  This can then be used for logging the calls,
- * for which one can get a sample implementation if PERL_MEM_LOG_STDERR
- * is defined.
- * 
+ * line number, and C function name if available) passed in.  This info can
+ * then be used for logging the calls, for which one gets a sample
+ * implementation if PERL_MEM_LOG_STDERR is defined.
+ *
  * Known problems:
  * - all memory allocs do not get logged, only those
  *   that go through Newx() and derivatives (while all
@@ -698,7 +701,7 @@ Malloc_t Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int li
 /* pre 5.9.x compatibility */
 #define New(x,v,n,t)   Newx(v,n,t)
 #define Newc(x,v,n,t,c)        Newxc(v,n,t,c)
-#define Newc(x,v,n,t,c)        Newxc(v,n,t,c)
+#define Newz(x,v,n,t)  Newxz(v,n,t)
 
 #define Renew(v,n,t) \
          (v = (MEM_WRAP_CHECK_(n,t) MEM_LOG_REALLOC(n,t,v,(t*)saferealloc((Malloc_t)(v),(MEM_SIZE)((n)*sizeof(t))))))
@@ -756,10 +759,11 @@ Malloc_t Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int li
 #define pTHX__VALUE_ ,(void *)my_perl,
 #define pTHX__VALUE  ,(void *)my_perl
 #else
-#define pTHX_FORMAT 
+#define pTHX_FORMAT
 #define pTHX__FORMAT
-#define pTHX_VALUE_ 
+#define pTHX_VALUE_
 #define pTHX_VALUE
-#define pTHX__VALUE_ 
+#define pTHX__VALUE_
 #define pTHX__VALUE
 #endif /* USE_ITHREADS */
+