Index: trunk/zoo-kernel/service_conf.l
===================================================================
--- trunk/zoo-kernel/service_conf.l	(revision 99)
+++ trunk/zoo-kernel/service_conf.l	(revision 100)
@@ -41,5 +41,5 @@
 
 attname	[a-zA-Z0-9_\-]+
-attvalue1	[\*\+,;@a-zA-Z0-9_\-::.:" "\"\'/\\\(\)]+
+attvalue1	[\^\*\+,;@a-zA-Z0-9_\-::.:" "\"\'/\\\(\)]+
 
 attvalue		\"[^"]*\"|\'[^']*\'\(\)
Index: trunk/zoo-kernel/service_internal_python.c
===================================================================
--- trunk/zoo-kernel/service_internal_python.c	(revision 99)
+++ trunk/zoo-kernel/service_internal_python.c	(revision 100)
@@ -305,15 +305,4 @@
   for(i=0;i<nb;i++){
     PyObject* key=PyList_GetItem(list,i);
-    if(strcmp(PyString_AsString(key),"size")==0){
-      PyObject* value=PyDict_GetItem((PyObject*)t,key);
-      sizeValue=atoi(PyString_AsString(value));
-      Py_DECREF(value);
-      Py_DECREF(key);    
-      break;
-    }
-    Py_DECREF(key);    
-  }
-  for(i=0;i<nb;i++){
-    PyObject* key=PyList_GetItem(list,i);
     PyObject* value=PyDict_GetItem((PyObject*)t,key);
 #ifdef DEBUG
@@ -321,8 +310,9 @@
 	    PyString_AsString(key),PyString_AsString(value));
 #endif
-    if(sizeValue>=0 && strcmp(PyString_AsString(key),"value")==0){
-      char *buffer=NULL;//(char*)malloc((sizeValue+1)*sizeof(char));
+    if(strcmp(PyString_AsString(key),"value")==0){
+      char *buffer=NULL;
       Py_ssize_t size;
       PyString_AsStringAndSize(value,&buffer,&size);
+      fprintf(stderr,"SIZE %d\n",size);
       if(res!=NULL){
 	addToMap(res,PyString_AsString(key),"");
@@ -332,7 +322,10 @@
       map* tmpR=getMap(res,"value");
       free(tmpR->value);
-      tmpR->value=(char*)malloc((sizeValue+1)*sizeof(char));
-      memmove(tmpR->value,buffer,sizeValue*sizeof(char));
-      tmpR->value[sizeValue]=0;
+      tmpR->value=(char*)malloc((size+1)*sizeof(char));
+      memmove(tmpR->value,buffer,size*sizeof(char));
+      tmpR->value[size]=0;
+      char sin[1024];
+      sprintf(sin,"%d",size);
+      addToMap(res,"size",sin);
     }else{
       if(res!=NULL)
