--- lib_pcre/pcre.h.orig Fri Jan 11 10:19:12 2002 +++ lib_pcre/pcre.h Mon Nov 17 06:16:46 2003 @@ -86,9 +86,19 @@ /* Store get and free functions. These can be set to alternative malloc/free functions if required. Some magic is required for Win32 DLL; it is null on other OS. */ - +/* force usage of native malloc is a dirty hack to get + around "gp-relative relocation against dynamic symbol + pcre_(malloc|free)" problem on Alpha as reported in + http://marc.theaimsgroup.com/?l=kroupware&m=106849138602149. Using + it prevents applications from providing customized memory management + functions for pcre at runtime which does break the test suite */ +#ifdef PCRE_FORCENATIVEMALLOC +#define pcre_malloc malloc +#define pcre_free free +#else PCRE_DL_IMPORT extern void *(*pcre_malloc)(size_t); PCRE_DL_IMPORT extern void (*pcre_free)(void *); +#endif #undef PCRE_DL_IMPORT --- lib_pcre/pcre.c.orig Mon Jan 7 15:21:06 2002 +++ lib_pcre/pcre.c Mon Nov 17 06:18:15 2003 @@ -184,8 +184,12 @@ indirections below, which are can be changed by the caller, but are shared between all threads. */ +#ifdef PCRE_FORCENATIVEMALLOC +/* nop */ +#else void *(*pcre_malloc)(size_t) = malloc; void (*pcre_free)(void *) = free; +#endif Index: lib_l2/l2_ut_pcre.c --- lib_l2/l2_ut_pcre.c.orig 2003-01-28 10:10:39.000000000 +0100 +++ lib_l2/l2_ut_pcre.c 2003-11-17 13:19:34.000000000 +0100 @@ -377,8 +377,12 @@ #define match_condassert 0x01 #define match_isgroup 0x02 -void *(*pcre_malloc) (size_t) = malloc; -void (*pcre_free) (void *) = free; +#ifdef PCRE_FORCENATIVEMALLOC +/* nop */ +#else +void *(*pcre_malloc)(size_t) = malloc; +void (*pcre_free)(void *) = free; +#endif #ifndef L2_UT_PCRE_SUPPORT_UTF8 #define GETCHARINC(c, eptr) c = *eptr++; Index: lib_l2/l2_ut_pcre.h --- lib_l2/l2_ut_pcre.h.orig 2002-01-11 11:36:14.000000000 +0100 +++ lib_l2/l2_ut_pcre.h 2003-11-17 13:29:07.000000000 +0100 @@ -59,8 +59,19 @@ #define __PCRE_CONCAT(x) x #define PCRE_CONCAT(x,y) __PCRE_CONCAT(x)y #endif +/* force usage of native malloc is a dirty hack to get + around "gp-relative relocation against dynamic symbol + pcre_(malloc|free)" problem on Alpha as reported in + http://marc.theaimsgroup.com/?l=kroupware&m=106849138602149. Using + it prevents applications from providing customized memory management + functions for pcre at runtime which does break the test suite */ +#ifdef PCRE_FORCENATIVEMALLOC +#define pcre_malloc malloc +#define pcre_free free +#else #define pcre_malloc PCRE_CONCAT(PCRE_PREFIX,pcre_malloc) #define pcre_free PCRE_CONCAT(PCRE_PREFIX,pcre_free) +#endif #define pcre_compile PCRE_CONCAT(PCRE_PREFIX,pcre_compile) #define pcre_copy_substring PCRE_CONCAT(PCRE_PREFIX,pcre_copy_substring) #define pcre_exec PCRE_CONCAT(PCRE_PREFIX,pcre_exec) @@ -116,8 +127,12 @@ typedef struct pcre_st pcre; typedef struct pcre_extra_st pcre_extra; +#ifdef PCRE_FORCENATIVEMALLOC +/* nop */ +#else extern void *(*pcre_malloc)(size_t); extern void (*pcre_free)(void *); +#endif extern pcre *pcre_compile(const char *, int, const char **, int *, const unsigned char *);