Index: /trunk/xcache.c
===================================================================
--- /trunk/xcache.c	(revision 498)
+++ /trunk/xcache.c	(revision 500)
@@ -670,5 +670,5 @@
 		xc_compilererror_t *error = &p->compilererrors[i];
 		CG(zend_lineno) = error->lineno;
-		zend_error(error->type, "%s", error->error);
+		zend_error(E_STRICT, "%s", error->error);
 	}
 	CG(zend_lineno) = 0;
Index: /trunk/processor/processor.m4
===================================================================
--- /trunk/processor/processor.m4	(revision 498)
+++ /trunk/processor/processor.m4	(revision 500)
@@ -746,5 +746,4 @@
 #ifdef E_STRICT
 DEF_STRUCT_P_FUNC(`xc_compilererror_t', , `dnl {{{
-	DISPATCH(int, type)
 	DISPATCH(uint, lineno)
 	DISPATCH(int, error_len)
Index: /trunk/xcache.h
===================================================================
--- /trunk/xcache.h	(revision 498)
+++ /trunk/xcache.h	(revision 500)
@@ -268,5 +268,4 @@
 /* {{{ xc_compilererror_t */
 typedef struct {
-	int type;
 	uint lineno;
 	int error_len;
Index: /trunk/ChangeLog
===================================================================
--- /trunk/ChangeLog	(revision 496)
+++ /trunk/ChangeLog	(revision 500)
@@ -6,5 +6,5 @@
 ChangeLog
 ========
- * compiler errors: all compiler warning (e.g.: E_STRICT) is now cached and is supported for user handler
+ * compiler errors: all compiler warning (E_STRICT only currently) is now cached and is supported for user handler
  * added module dependency
  * live with wrong system time: allow caching files with mtime in further
Index: /trunk/utils.c
===================================================================
--- /trunk/utils.c	(revision 496)
+++ /trunk/utils.c	(revision 500)
@@ -526,4 +526,22 @@
 	sandbox = (xc_sandbox_t *) XG(sandbox);
 	assert(sandbox != NULL);
+	if (type != E_STRICT) {
+		/* give up, and user handler is not supported in this case */
+		int i;
+		zend_uint orig_lineno = CG(zend_lineno);
+		zend_error_cb = sandbox->orig_zend_error_cb;
+
+		for (i = 0; i < sandbox->compilererror_cnt; i ++) {
+			compilererror = &sandbox->compilererrors[i];
+			CG(zend_lineno) = compilererror->lineno;
+			zend_error(E_STRICT, "%s", compilererror->error);
+		}
+		CG(zend_lineno) = orig_lineno;
+		sandbox->compilererror_cnt = 0;
+
+		sandbox->orig_zend_error_cb(type, error_filename, error_lineno, format, args);
+		return;
+	}
+
 	if (sandbox->compilererror_cnt <= sandbox->compilererror_size) {
 		if (sandbox->compilererror_size) {
@@ -537,5 +555,4 @@
 	}
 	compilererror = &sandbox->compilererrors[sandbox->compilererror_cnt++];
-	compilererror->type   = type;
 	compilererror->lineno = error_lineno;
 	compilererror->error_len = zend_vspprintf(&compilererror->error, 0, format, args);
@@ -721,5 +738,5 @@
 		xc_compilererror_t *error = &sandbox->compilererrors[i];
 		CG(zend_lineno) = error->lineno;
-		zend_error(error->type, "%s", error->error);
+		zend_error(E_STRICT, "%s", error->error);
 	}
 	CG(zend_lineno) = 0;
