Index: trunk/processor/main.m4
===================================================================
--- trunk/processor/main.m4	(revision 856)
+++ trunk/processor/main.m4	(revision 860)
@@ -25,9 +25,9 @@
 define(`INDENT', `xc_dprint_indent(indent);')
 dnl }}}
-dnl {{{ ALLOC(1:dst, 2:type, 3:count=1, 4:clean=false, 5:forcetype=$2)
+dnl {{{ ALLOC(1:dst, 2:type, 3:count=1, 4:clean=false, 5:realtype=$2)
 define(`ALLOC', `
 	pushdef(`COUNT', `ifelse(`$3', `', `1', `$3')')
 	pushdef(`SIZE', `sizeof($2)ifelse(`$3', `', `', ` * $3')')
-	pushdef(`FORCETYPE', `ifelse(`$5', , `$2', `$5')')
+	pushdef(`REALTYPE', `ifelse(`$5', , `$2', `$5')')
 	/* allocate */
 	IFCALC(`
@@ -56,5 +56,5 @@
 			void *oldp = processor->p;
 		')
-		$1 = (FORCETYPE *) (processor->p = (char *) ALIGN(processor->p));
+		$1 = (REALTYPE *) (processor->p = (char *) ALIGN(processor->p));
 		ifelse(`$4', `', `
 				IFASSERT(`memsetptr($1, (void *) (unsigned long) __LINE__, SIZE);')
@@ -72,16 +72,17 @@
 	IFRESTORE(`ifelse(`$4', `', `
 			ifelse(
-				FORCETYPE*COUNT, `zval*1', `ALLOC_ZVAL($1);',
-				FORCETYPE*COUNT, `HashTable*1', `ALLOC_HASHTABLE($1);',
-				`', `', `$1 = (FORCETYPE *) emalloc(SIZE);')
+				REALTYPE*COUNT, `zval*1', `ALLOC_ZVAL($1);',
+				REALTYPE*COUNT, `HashTable*1', `ALLOC_HASHTABLE($1);',
+				`', `', `$1 = (REALTYPE *) emalloc(SIZE);')
 			IFASSERT(`memsetptr($1, (void *) __LINE__, SIZE);')
 		', `
-			$1 = (FORCETYPE *) ecalloc(COUNT, sizeof($2));
-		')
-	')
+			$1 = (REALTYPE *) ecalloc(COUNT, sizeof($2));
+		')
+	')
+	popdef(`REALTYPE')
 	popdef(`COUNT')
 	popdef(`SIZE')
 ')
-dnl CALLOC(1:dst, 2:type [, 3:count=1, 4:forcetype=$2 ])
+dnl CALLOC(1:dst, 2:type [, 3:count=1, 4:realtype=$2 ])
 define(`CALLOC', `ALLOC(`$1', `$2', `$3', `1', `$4')')
 dnl }}}
@@ -96,5 +97,5 @@
 		IFDASM(`add_assoc_unicodel_ex(dst, ZEND_STRS("$3"), ZSTR_U($2->name), $2->name_length, 1);')
 #else
-		IFDASM(`add_assoc_stringl_ex(dst, ZEND_STRS("$3"), $2->name, $2->name_length, 1);')
+		IFDASM(`add_assoc_stringl_ex(dst, ZEND_STRS("$3"), (char *) $2->name, $2->name_length, 1);')
 #endif
 	}
@@ -212,5 +213,5 @@
 	define(`ELEMENTS_DONE', defn(`ELEMENTS_DONE')`,"$1"')
 	IFASSERT(`dnl
-		if (zend_hash_exists(&done_names, "$1", sizeof("$1"))) {
+		if (zend_u_hash_exists(&done_names, IS_STRING, "$1", sizeof("$1"))) {
 			fprintf(stderr
 				, "duplicate field at %s `#'%d FUNC_NAME`' : %s\n"
