X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=handy.h;h=42a179778668b9d780bd794dc8cc48f6e1b81f5d;hb=06c0cc96ebd866767a6d107ed78967600f7e0395;hp=72b967ec811735013981dd02c679dc76c6a0aa59;hpb=c5008215525f2f0a2a10a4c6a997f4cccfb6d09b;p=p5sagit%2Fp5-mst-13.2.git diff --git a/handy.h b/handy.h index 72b967e..42a1797 100644 --- 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,12 +88,14 @@ 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 # if (defined(_MSC_VER) && _MSC_VER < 1300) || /* Pre-MSVC 7.0 has neither __func__ nor __FUNCTION and no good workarounds, either. */ \ - (defined(__DECC_VER)) /* Tru64 or VMS, and strict C89 being used. */ + (defined(__DECC_VER)) /* Tru64 or VMS, and strict C89 being used, but not modern enough cc (in Tur64, -c99 not known, only -std1). */ # define FUNCTION__ "" # else # define FUNCTION__ __FUNCTION__ /* Common extension. */ @@ -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). @@ -173,7 +175,7 @@ typedef U64TYPE U64; #endif /* HMB H.Merijn Brand - a placeholder for preparing Configure patches */ -#if defined(LIBM_LIB_VERSION) +#if defined(HAS_MALLOC_SIZE) && defined(HAS_MALLOC_GOOD_SIZE) && defined(HAS_CLEARENV) /* Not (yet) used at top level, but mention them for metaconfig */ #endif @@ -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)) @@ -639,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 @@ -696,10 +698,13 @@ Malloc_t Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int li #define Newxc(v,n,t,c) (v = (MEM_WRAP_CHECK_(n,t) MEM_LOG_ALLOC(n,t,(c*)safemalloc((MEM_SIZE)((n)*sizeof(t)))))) #define Newxz(v,n,t) (v = (MEM_WRAP_CHECK_(n,t) MEM_LOG_ALLOC(n,t,(t*)safemalloc((MEM_SIZE)((n)*sizeof(t)))))), \ memzero((char*)(v), (n)*sizeof(t)) + +#ifndef PERL_CORE /* 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) +#endif #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)))))) @@ -708,7 +713,7 @@ Malloc_t Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int li #ifdef PERL_POISON #define Safefree(d) \ - ((d) ? (void)(safefree(MEM_LOG_FREE((Malloc_t)(d)))), Poison(&(d), 1, Malloc_t)) : (void) 0) + ((d) ? (void)(safefree(MEM_LOG_FREE((Malloc_t)(d))), Poison(&(d), 1, Malloc_t)) : (void) 0) #else #define Safefree(d) safefree(MEM_LOG_FREE((Malloc_t)(d))) #endif @@ -757,10 +762,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 */ +