cvs: ZendEngine2 / zend.h zend_alloc.c zend_alloc.h zend_unicode.h

"Arnaud Le Blanc" <[email protected]> Fri, 01 May 2009 00:29:50 -0000
Newsgroups gmane.comp.php.cvs.zend
Message-ID <cvslbarnaud1241137790@cvsserver>
lbarnaud		Fri May  1 00:29:50 2009 UTC

  Modified files:              
    /ZendEngine2	zend.h zend_alloc.c zend_alloc.h zend_unicode.h 
  Log:
  Added missing UChar* and zstr malloc variants

-- 
Zend Engine CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
lbarnaud-20090501002950.txt (text/plain, 14.7 KB)
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend.h?r1=1.367&r2=1.368&diff_format=u
Index: ZendEngine2/zend.h
diff -u ZendEngine2/zend.h:1.367 ZendEngine2/zend.h:1.368
--- ZendEngine2/zend.h:1.367	Thu Mar 26 20:01:37 2009
+++ ZendEngine2/zend.h	Fri May  1 00:29:49 2009
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend.h,v 1.367 2009/03/26 20:01:37 felipe Exp $ */
+/* $Id: zend.h,v 1.368 2009/05/01 00:29:49 lbarnaud Exp $ */
 
 #ifndef ZEND_H
 #define ZEND_H
@@ -254,6 +254,29 @@
 	void  *v;
 } zstr;
 
+#ifdef __GNUC__
+#	define ZSTR(x)    ((zstr)((void*)(x)))
+#	define NULL_ZSTR  ZSTR((void*)NULL)
+#	define EMPTY_ZSTR ZSTR("\0\0")
+#else
+extern ZEND_API zstr null_zstr;
+extern ZEND_API zstr empty_zstr;
+
+static inline zstr _to_zstr(void *v) {
+	zstr ret;
+	ret.v = v;
+	return ret;
+}
+
+#	define ZSTR(x)    _to_zstr(x)
+#	define NULL_ZSTR  null_zstr
+#	define EMPTY_ZSTR empty_zstr
+#endif
+
+#define PZSTR(x)  ((zstr*)((void*)&(x)))
+#define EMPTY_STR ((UChar*)"\0\0")
+
+
 #include "zend_errors.h"
 #include "zend_alloc.h"
 
@@ -283,28 +306,6 @@
 
 #define MAX_LENGTH_OF_DOUBLE 32
 
-#ifdef __GNUC__
-#	define ZSTR(x)    ((zstr)((void*)(x)))
-#	define NULL_ZSTR  ZSTR((void*)NULL)
-#	define EMPTY_ZSTR ZSTR("\0\0")
-#else
-extern ZEND_API zstr null_zstr;
-extern ZEND_API zstr empty_zstr;
-
-static inline zstr _to_zstr(void *v) {
-	zstr ret;
-	ret.v = v;
-	return ret;
-}
-
-#	define ZSTR(x)    _to_zstr(x)
-#	define NULL_ZSTR  null_zstr
-#	define EMPTY_ZSTR empty_zstr
-#endif
-
-#define PZSTR(x)  ((zstr*)((void*)&(x)))
-#define EMPTY_STR ((UChar*)"\0\0")
-
 #undef SUCCESS
 #undef FAILURE
 #define SUCCESS 0
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_alloc.c?r1=1.224&r2=1.225&diff_format=u
Index: ZendEngine2/zend_alloc.c
diff -u ZendEngine2/zend_alloc.c:1.224 ZendEngine2/zend_alloc.c:1.225
--- ZendEngine2/zend_alloc.c:1.224	Wed Apr  1 16:55:11 2009
+++ ZendEngine2/zend_alloc.c	Fri May  1 00:29:49 2009
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_alloc.c,v 1.224 2009/04/01 16:55:11 felipe Exp $ */
+/* $Id: zend_alloc.c,v 1.225 2009/05/01 00:29:49 lbarnaud Exp $ */
 
 #include "zend.h"
 #include "zend_alloc.h"
@@ -2458,24 +2458,96 @@
 }
 /* }}} */
 
+ZEND_API UChar *_safe_eumalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) /* {{{ */
+{
+	size = safe_address(size, sizeof(UChar), 0);
+	offset = safe_address(offset, sizeof(UChar), 0);
+	return (UChar*) _safe_emalloc(nmemb, size, offset ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
+}
+/* }}} */
+
+ZEND_API zstr _safe_ezmalloc(int type, size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) /* {{{ */
+{
+	if (type == IS_STRING) {
+		return ZSTR(_safe_emalloc(nmemb, size, offset ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC));
+	} else {
+		return ZSTR(_safe_eumalloc(nmemb, size, offset ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC));
+	}
+}
+/* }}} */
+
 ZEND_API void *_safe_malloc(size_t nmemb, size_t size, size_t offset) /* {{{ */
 {
 	return pemalloc(safe_address(nmemb, size, offset), 1);
 }
 /* }}} */
 
+ZEND_API UChar *_safe_umalloc(size_t nmemb, size_t size, size_t offset) /* {{{ */
+{
+	size = safe_address(size, sizeof(UChar), 0);
+	offset = safe_address(size, sizeof(UChar), 0);
+	return pemalloc(safe_address(nmemb, size, offset), 1);
+}
+/* }}} */
+
+ZEND_API zstr _safe_zmalloc(int type, size_t nmemb, size_t size, size_t offset) /* {{{ */
+{
+	if (type == IS_STRING) {
+		return ZSTR(_safe_malloc(nmemb, size, offset));
+	} else {
+		return ZSTR(_safe_umalloc(nmemb, size, offset));
+	}
+}
+/* }}} */
+
 ZEND_API void *_safe_erealloc(void *ptr, size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) /* {{{ */
 {
 	return erealloc_rel(ptr, safe_address(nmemb, size, offset));
 }
 /* }}} */
 
+ZEND_API UChar *_safe_eurealloc(UChar *ptr, size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) /* {{{ */
+{
+	size = safe_address(size, sizeof(UChar), 0);
+	offset = safe_address(offset, sizeof(UChar), 0);
+	return (UChar*) _safe_erealloc(ptr, nmemb, size, offset ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
+}
+/* }}} */
+
+ZEND_API zstr _safe_ezrealloc(int type, zstr str, size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) /* {{{ */
+{
+	if (type == IS_STRING) {
+		return ZSTR(_safe_erealloc(str.v, nmemb, size, offset ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC));
+	} else {
+		return ZSTR(_safe_eurealloc(str.u, nmemb, size, offset ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC));
+	}
+}
+/* }}} */
+
 ZEND_API void *_safe_realloc(void *ptr, size_t nmemb, size_t size, size_t offset) /* {{{ */
 {
 	return perealloc(ptr, safe_address(nmemb, size, offset), 1);
 }
 /* }}} */
 
+ZEND_API UChar *_safe_urealloc(UChar *ptr, size_t nmemb, size_t size, size_t offset) /* {{{ */
+{
+	size = safe_address(size, sizeof(UChar), 0);
+	offset = safe_address(offset, sizeof(UChar), 0);
+	return (UChar*) perealloc(ptr, safe_address(nmemb, size, offset), 1);
+}
+/* }}} */
+
+ZEND_API zstr _safe_zrealloc(int type, zstr str, size_t nmemb, size_t size, size_t offset) /* {{{ */
+{
+	if (type == IS_STRING) {
+		return ZSTR(_safe_realloc(str.s, nmemb, size, offset));
+	} else {
+		return ZSTR(_safe_urealloc(str.u, nmemb, size, offset));
+	}
+}
+/* }}} */
+
 ZEND_API void *_ecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) /* {{{ */
 {
 	void *p;
@@ -2519,6 +2591,16 @@
 }
 /* }}} */
 
+ZEND_API zstr _ezstrdup(int type, const zstr str ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) /* {{{ */
+{
+	if (type == IS_STRING) {
+		return ZSTR(_estrdup(str.s ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC));
+	} else {
+		return ZSTR(_eustrdup(str.u ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC));
+	}
+}
+/* }}} */
+
 ZEND_API char *_estrndup(const char *s, uint length ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) /* {{{ */
 {
 	char *p;
@@ -2617,6 +2699,16 @@
 }
 /* }}} */
 
+ZEND_API zstr zend_zstrdup(int type, const zstr s) /* {{{ */
+{
+	if (type == IS_STRING) {
+		return ZSTR(strdup(s.s));
+	} else {
+		return ZSTR(zend_ustrdup(s.u));
+	}
+}
+/* }}} */
+
 ZEND_API int zend_set_memory_limit(size_t memory_limit) /* {{{ */
 {
 	TSRMLS_FETCH();
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_alloc.h?r1=1.96&r2=1.97&diff_format=u
Index: ZendEngine2/zend_alloc.h
diff -u ZendEngine2/zend_alloc.h:1.96 ZendEngine2/zend_alloc.h:1.97
--- ZendEngine2/zend_alloc.h:1.96	Wed Dec 31 11:12:28 2008
+++ ZendEngine2/zend_alloc.h	Fri May  1 00:29:49 2009
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_alloc.h,v 1.96 2008/12/31 11:12:28 sebastian Exp $ */
+/* $Id: zend_alloc.h,v 1.97 2009/05/01 00:29:49 lbarnaud Exp $ */
 
 #ifndef ZEND_ALLOC_H
 #define ZEND_ALLOC_H
@@ -43,6 +43,7 @@
 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);
+ZEND_API zstr zend_zstrdup(int type, const zstr s);
 
 ZEND_API void *_emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC;
 ZEND_API void *_safe_emalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC;
@@ -54,9 +55,21 @@
 ZEND_API void *_safe_realloc(void *ptr, size_t nmemb, size_t size, size_t offset);
 ZEND_API char *_estrdup(const char *s ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC;
 ZEND_API char *_estrndup(const char *s, unsigned int length ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC;
+
+ZEND_API UChar *_safe_eumalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC;
+ZEND_API UChar *_safe_umalloc(size_t nmemb, size_t size, size_t offset) ZEND_ATTRIBUTE_MALLOC;
+ZEND_API UChar *_safe_eurealloc(UChar *ptr, size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
+ZEND_API UChar *_safe_urealloc(UChar *ptr, size_t nmemb, size_t size, size_t offset);
 ZEND_API UChar *_eustrdup(const UChar *s ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC;
 ZEND_API UChar *_eustrndup(const UChar *s, int length ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC;
+
+ZEND_API zstr _safe_ezmalloc(int type, size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
+ZEND_API zstr _safe_zmalloc(int type, size_t nmemb, size_t size, size_t offset);
+ZEND_API zstr _safe_ezrealloc(int type, zstr str, size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
+ZEND_API zstr _safe_zrealloc(int type, zstr str, size_t nmemb, size_t size, size_t offset);
+ZEND_API zstr _ezstrdup(int type, const zstr s ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
 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);
 
 /* Standard wrapper macros */
@@ -69,11 +82,26 @@
 #define safe_erealloc(ptr, nmemb, size, offset)       _safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
 #define estrdup(s)						_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
 #define estrndup(s, length)				_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
+
 #define eumalloc(size)					(UChar*)_emalloc(UBYTES(size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
+#define safe_eumalloc(nmemb, size, offset)       _safe_eumalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
+#define eucalloc(nmemb, size)			_ecalloc((nmemb), UBYTES(size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
 #define eurealloc(ptr, size)			(UChar*)_erealloc((ptr), UBYTES(size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
+#define eurealloc_recoverable(ptr, size)			(UChar*)_erealloc((ptr), UBYTES(size), 1 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
+#define safe_eurealloc(ptr, nmemb, size, offset)       _safe_eurealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
 #define eustrndup(s, length)			_eustrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
 #define eustrdup(s)						_eustrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
+
+#define ezmalloc(type, size)					ZSTR(_emalloc(ZBYTES(type, size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC))
+#define safe_ezmalloc(type, nmemb, size, offset)         _safe_ezmalloc((type), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
+#define ezfree(str)						_efree((str).v ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
+#define ezcalloc(type, nmemb, size)			ZSTR(_ecalloc((nmemb), ZBYTES(type, size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC))
+#define ezrealloc(type, str, size)			ZSTR(_erealloc((str).v, ZBYTES(type, size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC))
+#define ezrealloc_recoverable(type, str, size)			ZSTR(_erealloc((str).v, ZBYTES(type, size), 1 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC))
+#define safe_ezrealloc(type, str, nmemb, size, offset)   _safe_ezrealloc((type), (str), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
 #define ezstrndup(type, s, length)      _ezstrndup((type), (s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
+#define ezstrdup(type, s)      _ezstrdup((type), (s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
+
 
 /* Relay wrapper macros */
 #define emalloc_rel(size)					_emalloc((size) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC)
@@ -99,10 +127,24 @@
 #define perealloc_recoverable(ptr, size, persistent) ((persistent)?realloc((ptr), (size)):erealloc_recoverable((ptr), (size)))
 #define pestrdup(s, persistent) ((persistent)?strdup(s):estrdup(s))
 #define pestrndup(s, length, persistent) ((persistent)?zend_strndup((s),(length)):estrndup((s),(length)))
+
 #define peumalloc(size, persistent) ((persistent)?malloc(UBYTES(size)):eumalloc(size))
+#define safe_peumalloc(nmemb, size, offset, persistent)	((persistent)?_safe_umalloc(nmemb, size, offset):safe_eumalloc(nmemb, size, offset))
+#define peucalloc(nmemb, size, persistent) ((persistent)?calloc((nmemb), UBYTES(size)):ecalloc((nmemb), UBYTES(size)))
 #define peurealloc(ptr, size, persistent) ((persistent)?realloc((ptr),UBYTES(size)):eurealloc((ptr),size))
+#define safe_peurealloc(ptr, nmemb, size, offset, persistent)	((persistent)?_safe_urealloc((ptr), (nmemb), (size), (offset)):safe_eurealloc((ptr), (nmemb), (size), (offset)))
+#define peurealloc_recoverable(ptr, size, persistent) ((persistent)?realloc((ptr),UBYTES(size)):eurealloc_recoverable((ptr),size))
 #define peustrdup(s, persistent) ((persistent)?zend_ustrdup((s)):eustrdup((s)))
 #define peustrndup(s, length, persistent) ((persistent)?zend_ustrndup((s),(length)):eustrndup((s),(length)))
+
+#define pezmalloc(type, size, persistent) ((persistent)?ZSTR(malloc(ZBYTES(type, size))):ezmalloc(type, size))
+#define pezfree(str, persistent)  ((persistent)?free((str).v):ezfree(str))
+#define safe_pezmalloc(type, nmemb, size, offset, persistent)	((persistent)?_safe_zmalloc(type, nmemb, size, offset):safe_ezmalloc(type, nmemb, size, offset))
+#define pezcalloc(type, nmemb, size, persistent) ((persistent)?ZSTR(calloc((nmemb), ZBYTES(type, size))):ezcalloc((type), (nmemb), (size)))
+#define pezrealloc(type, str, size, persistent) ((persistent)?ZSTR(realloc((str).v,ZBYTES(type, size))):ezrealloc((type),(str),(size)))
+#define safe_pezrealloc(type, str, nmemb, size, offset, persistent)	((persistent)?_safe_zrealloc((type), (str), (nmemb), (size), (offset)):safe_ezrealloc((type), (str), (nmemb), (size), (offset)))
+#define pezrealloc_recoverable(type, str, size, persistent) ((persistent)?ZSTR(realloc((str).v,ZBYTES(type,size))):ezrealloc_recoverable((type), (str), (size)))
+#define pezstrdup(type, s, persistent) ((persistent)?zend_zstrdup((type),(s)):ezstrdup((type),(s)))
 #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))
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_unicode.h?r1=1.31&r2=1.32&diff_format=u
Index: ZendEngine2/zend_unicode.h
diff -u ZendEngine2/zend_unicode.h:1.31 ZendEngine2/zend_unicode.h:1.32
--- ZendEngine2/zend_unicode.h:1.31	Thu Mar 26 20:01:38 2009
+++ ZendEngine2/zend_unicode.h	Fri May  1 00:29:49 2009
@@ -130,6 +130,8 @@
 
 #define ZSTR_LEN(__type, __str) ((__type==IS_UNICODE)?u_strlen(__str.u):strlen(__str.s))
 
+#define ZBYTES(__type, __len) (((__type) == IS_UNICODE) ? UBYTES((__len)) : (__len))
+
 #define ZEND_U_CONVERTER(c) ((c)?(c):UG(fallback_encoding_conv))
 
 #define USTR_FREE(ustr) do { if (ustr) { efree(ustr); } } while (0);