]> granicus.if.org Git - php/commitdiff
Flesh out some missing API calls
authorSara Golemon <pollita@php.net>
Sun, 7 Jan 2007 05:24:55 +0000 (05:24 +0000)
committerSara Golemon <pollita@php.net>
Sun, 7 Jan 2007 05:24:55 +0000 (05:24 +0000)
Zend/zend_alloc.c
Zend/zend_alloc.h

index c7558aabc7712c5143ed2c79a2fb905d09ff24bf..30934a5ca4fed2189f2a8749ce5638e19151412d 100644 (file)
@@ -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)
 {
index ff1e8bfe510b5ab46785343ae019f1a27e975b13..30e5dd5af5c3250d535afe58979397721dc11b41 100644 (file)
@@ -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);