From 97ee887a13f5239197d65695d45028eda9dadab4 Mon Sep 17 00:00:00 2001 From: Sara Golemon Date: Sun, 7 Jan 2007 05:24:55 +0000 Subject: [PATCH] Flesh out some missing API calls --- Zend/zend_alloc.c | 26 ++++++++++++++++++++++++++ Zend/zend_alloc.h | 6 ++++++ 2 files changed, 32 insertions(+) diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index c7558aabc7..30934a5ca4 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -2013,6 +2013,32 @@ 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) { diff --git a/Zend/zend_alloc.h b/Zend/zend_alloc.h index ff1e8bfe51..30e5dd5af5 100644 --- a/Zend/zend_alloc.h +++ b/Zend/zend_alloc.h @@ -55,6 +55,8 @@ 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) @@ -94,6 +96,8 @@ ZEND_API size_t _zend_mem_block_size(void *ptr TSRMLS_DC ZEND_FILE_LINE_DC ZEND_ #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 pemalloc_rel(size, persistent) ((persistent)?malloc(size):emalloc_rel(size)) #define pefree_rel(ptr, persistent) ((persistent)?free(ptr):efree_rel(ptr)) @@ -104,6 +108,8 @@ ZEND_API size_t _zend_mem_block_size(void *ptr TSRMLS_DC ZEND_FILE_LINE_DC ZEND_ #define safe_estrdup(ptr) ((ptr)?(estrdup(ptr)):STR_EMPTY_ALLOC()) #define safe_estrndup(ptr, len) ((ptr)?(estrndup((ptr), (len))):STR_EMPTY_ALLOC()) +#define safe_eustrdup(ptr) ((ptr)?(eustrdup((ptr))):STR_EMPTY_ALLOC()) +#define safe_eustrndup(ptr, len) ((ptr)?(eustrndup((ptr),(leng))):STR_EMPTY_ALLOC()) ZEND_API int zend_set_memory_limit(unsigned int memory_limit); -- 2.40.0