Index: /branches/1.2/NEWS
===================================================================
--- /branches/1.2/NEWS	(revision 327)
+++ /branches/1.2/NEWS	(revision 328)
@@ -1,2 +1,8 @@
+1.2.1 2007-?-?
+== NEWS ==
+== ChangeLog ==
+ * fixed #56: xcache_set segfaults when xcache.var_size=0
+ 
+========
 1.2.0 2006-12-10
 NEWS
Index: /branches/1.2/xcache.c
===================================================================
--- /branches/1.2/xcache.c	(revision 327)
+++ /branches/1.2/xcache.c	(revision 328)
@@ -1696,4 +1696,8 @@
 /* }}} */
 
+#define VAR_DISABLED_WARNING() do { \
+		php_error_docref(NULL TSRMLS_CC, E_WARNING, "xcache.var_size is either 0 or too small to enable var data caching"); \
+} while (0)
+
 static int xc_entry_init_key_var(xc_entry_t *xce, zval *name TSRMLS_DC) /* {{{ */
 {
@@ -1737,4 +1741,9 @@
 	xc_entry_data_var_t var;
 	zval *name;
+
+	if (!xc_var_caches) {
+		VAR_DISABLED_WARNING();
+		RETURN_NULL();
+	}
 
 	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &name) == FAILURE) {
@@ -1770,4 +1779,9 @@
 	zval *value;
 
+	if (!xc_var_caches) {
+		VAR_DISABLED_WARNING();
+		RETURN_NULL();
+	}
+
 	xce.ttl = XG(var_ttl);
 	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz|l", &name, &value, &xce.ttl) == FAILURE) {
@@ -1800,4 +1814,9 @@
 	xc_entry_data_var_t var;
 	zval *name;
+
+	if (!xc_var_caches) {
+		VAR_DISABLED_WARNING();
+		RETURN_FALSE;
+	}
 
 	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &name) == FAILURE) {
@@ -1832,4 +1851,9 @@
 	zval *name;
 
+	if (!xc_var_caches) {
+		VAR_DISABLED_WARNING();
+		RETURN_FALSE;
+	}
+
 	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &name) == FAILURE) {
 		return;
@@ -1858,4 +1882,9 @@
 	long value = 0;
 	zval oldzval;
+
+	if (!xc_var_caches) {
+		VAR_DISABLED_WARNING();
+		RETURN_NULL();
+	}
 
 	xce.ttl = XG(var_ttl);
