From: Sara Golemon Date: Sun, 7 Jan 2007 05:45:07 +0000 (+0000) Subject: Fix prior commit noticing this time that persistent allocators start with zend_*... X-Git-Tag: RELEASE_1_0_0RC1~372 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6f234cbf6f5ab4c0cb6911165abdfe0a01ebe178;p=php Fix prior commit noticing this time that persistent allocators start with zend_*() and that one already exists --- diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index 30934a5ca4..be15fbbe31 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -2013,33 +2013,6 @@ ZEND_API UChar *_eustrndup(const UChar *s, int length ZEND_FILE_LINE_DC ZEND_FIL return p; } -ZEND_API UChar *_peustrdup(const UChar *s) -{ - int length; - UChar *p; - - length = u_strlen(s)+1; - p = (UChar *) malloc(sizeof(UChar) * length); - if (!p) { - return (UChar *)NULL; - } - u_memcpy(p, s, length); - return p; -} - -ZEND_API UChar *_peustrndup(const UChar *s, int length) -{ - UChar *p; - - p = (UChar *) malloc(sizeof(UChar) * (length+1)); - if (!p) { - return (UChar *)NULL; - } - memcpy(p, s, length * sizeof(UChar)); - p[length] = 0; - return p; -} - ZEND_API zstr _ezstrndup(int type, const zstr s, uint length ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { if (type == IS_STRING) { @@ -2065,6 +2038,23 @@ ZEND_API char *zend_strndup(const char *s, uint length) return p; } +ZEND_API UChar *zend_ustrdup(const UChar *s) +{ + UChar *p; + uint length; + + length = u_strlen(s)+1; + p = (UChar *) malloc(UBYTES(length+1)); + if (!p) { + return (UChar *)NULL; + } + if (length) { + memcpy(p, s, UBYTES(length)); + } + p[length] = 0; + return p; +} + ZEND_API UChar *zend_ustrndup(const UChar *s, uint length) { UChar *p; diff --git a/Zend/zend_alloc.h b/Zend/zend_alloc.h index 30e5dd5af5..845e2fe7af 100644 --- a/Zend/zend_alloc.h +++ b/Zend/zend_alloc.h @@ -40,6 +40,7 @@ typedef struct _zend_leak_info { BEGIN_EXTERN_C() ZEND_API char *zend_strndup(const char *s, unsigned int length) ZEND_ATTRIBUTE_MALLOC; +ZEND_API UChar *zend_ustrdup(const UChar *s) ZEND_ATTRIBUTE_MALLOC; ZEND_API UChar *zend_ustrndup(const UChar *s, uint length) ZEND_ATTRIBUTE_MALLOC; ZEND_API zstr zend_zstrndup(int type, const zstr s, uint length); @@ -55,8 +56,6 @@ ZEND_API UChar *_eustrdup(const UChar *s ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_D ZEND_API UChar *_eustrndup(const UChar *s, int length ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC; ZEND_API zstr _ezstrndup(int type, const zstr s, uint length ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ZEND_API size_t _zend_mem_block_size(void *ptr TSRMLS_DC ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); -ZEND_API UChar *_peustrdup(const UChar *s) ZEND_ATTRIBUTE_MALLOC; -ZEND_API UChar *_peustrndup(const UChar *s, int length) ZEND_ATTRIBUTE_MALLOC; /* Standard wrapper macros */ #define emalloc(size) _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) @@ -96,8 +95,9 @@ ZEND_API UChar *_peustrndup(const UChar *s, int length) ZEND_ATTRIBUTE_MALLOC; #define pestrdup(s, persistent) ((persistent)?strdup(s):estrdup(s)) #define peumalloc(size, persistent) ((persistent)?malloc(UBYTES(size)):eumalloc(size)) #define peurealloc(ptr, size, persistent) ((persistent)?realloc((ptr),UBYTES(size)):eurealloc((ptr),size)) -#define peustrdup(s, persistent) ((persistent)?_peustrdup((s)):eustrdup((s))) -#define peustrndup(s, length, persistent) ((persistent)?_peustrndup((s),(length)):eustrndup((s),(length))) +#define peustrdup(s, persistent) ((persistent)?zend_ustrdup((s)):eustrdup((s))) +#define peustrndup(s, length, persistent) ((persistent)?zend_ustrndup((s),(length)):eustrndup((s),(length))) +#define pezstrndup(type, s, length, persistent) ((persistent)?zend_zstrndup((type),(s),(length)):ezstrndup((type),(s),(length))) #define pemalloc_rel(size, persistent) ((persistent)?malloc(size):emalloc_rel(size)) #define pefree_rel(ptr, persistent) ((persistent)?free(ptr):efree_rel(ptr))