Index: trunk/utils.c
===================================================================
--- trunk/utils.c	(revision 19)
+++ trunk/utils.c	(revision 88)
@@ -265,8 +265,14 @@
 #endif
 
-void xc_install_function(char *filename, zend_function *func, zend_uchar type, char *key, uint len TSRMLS_DC) /* {{{ */
+void xc_install_function(char *filename, zend_function *func, zend_uchar type, void *key, uint len TSRMLS_DC) /* {{{ */
 {
 	if (func->type == ZEND_USER_FUNCTION) {
-		if (zend_u_hash_add(CG(function_table), type, key, len,
+		if (*(char *) key == '\0') {
+			zend_u_hash_update(CG(function_table), type, key, len,
+						func, sizeof(zend_op_array),
+						NULL
+						);
+		}
+		else if (zend_u_hash_add(CG(function_table), type, key, len,
 					func, sizeof(zend_op_array),
 					NULL
@@ -285,5 +291,11 @@
 	ZESW(void *stored_ce_ptr, NOTHING);
 
-	if (zend_u_hash_add(CG(class_table), type, key, len,
+	if (*(char *) key == '\0') {
+		zend_u_hash_update(CG(class_table), type, key, len,
+					cest, sizeof(xc_cest_t),
+					ZESW(&stored_ce_ptr, NULL)
+					);
+	}
+	else if (zend_u_hash_add(CG(class_table), type, key, len,
 				cest, sizeof(xc_cest_t),
 				ZESW(&stored_ce_ptr, NULL)
