Index: /trunk/processor/head.m4
===================================================================
--- /trunk/processor/head.m4	(revision 769)
+++ /trunk/processor/head.m4	(revision 770)
@@ -141,5 +141,5 @@
 #define C_RELAYLINE , __LINE__
 ')
-static inline void xc_calc_string_n(xc_processor_t *processor, zend_uchar type, const zstr const str, long size IFASSERT(`, int relayline')) {
+static inline void xc_calc_string_n(xc_processor_t *processor, zend_uchar type, const_zstr const str, long size IFASSERT(`, int relayline')) {
 	pushdef(`__LINE__', `relayline')
 	int realsize = UNISW(size, (type == IS_UNICODE) ? UBYTES(size) : size);
@@ -163,5 +163,5 @@
 /* {{{ xc_store_string_n */
 REDEF(`KIND', `store')
-static inline zstr xc_store_string_n(xc_processor_t *processor, zend_uchar type, const zstr const str, long size IFASSERT(`, int relayline')) {
+static inline zstr xc_store_string_n(xc_processor_t *processor, zend_uchar type, const_zstr const str, long size IFASSERT(`, int relayline')) {
 	pushdef(`__LINE__', `relayline')
 	int realsize = UNISW(size, (type == IS_UNICODE) ? UBYTES(size) : size);
Index: /trunk/xcache.h
===================================================================
--- /trunk/xcache.h	(revision 769)
+++ /trunk/xcache.h	(revision 770)
@@ -138,4 +138,5 @@
 #ifndef IS_UNICODE
 typedef char *zstr;
+typedef const char *const_zstr;
 #	define ZSTR_S(s)     (s)
 #	define ZSTR_U(s)     (s)
@@ -145,4 +146,5 @@
 #	define ZSTR_PV(s)    (s)
 #else
+typedef const zstr const_zstr;
 #	define ZSTR_S(zs)    ((zs).s)
 #	define ZSTR_U(zs)    ((zs).u)
