Index: trunk/zoo-kernel/service_internal_python.c
===================================================================
--- trunk/zoo-kernel/service_internal_python.c	(revision 66)
+++ trunk/zoo-kernel/service_internal_python.c	(revision 67)
@@ -63,7 +63,7 @@
   sprintf(pythonpath,"%s:%s",ntmp,python_path);
 #endif
-  //#ifdef DEBUG
+#ifdef DEBUG
     fprintf(stderr,"PYTHONPATH=%s\n",pythonpath);
-  //#endif
+#endif
 #ifndef WIN32
   setenv("PYTHONPATH",pythonpath,1);
@@ -222,4 +222,5 @@
 	if(PyDict_SetItem(res,name,value)<0){
 	  fprintf(stderr,"Unable to parse params...");
+	  Py_DECREF(value);
 	  exit(1);
 	}
@@ -230,4 +231,5 @@
 	if(PyDict_SetItem(res,name,value)<0){
 	  fprintf(stderr,"Unable to parse params...");
+	  Py_DECREF(value);
 	  exit(1);
 	}
@@ -239,4 +241,5 @@
       if(PyDict_SetItem(res,name,value)<0){
 	fprintf(stderr,"Unable to parse params...");
+	Py_DECREF(value);
 	exit(1);
       }
@@ -279,4 +282,6 @@
     free(cursor->content);
     free(cursor);
+    Py_DECREF(value);
+    Py_DECREF(key);
 #ifdef DEBUG
     dumpMaps(res);
@@ -293,4 +298,16 @@
   int nb=PyList_Size(list);
   int i;
+  int sizeValue=-1;
+  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);
@@ -300,9 +317,28 @@
 	    PyString_AsString(key),PyString_AsString(value));
 #endif
-    if(res!=NULL)
-      addToMap(res,PyString_AsString(key),PyString_AsString(value));
-    else
-      res=createMap(PyString_AsString(key),PyString_AsString(value));
-  }
+    if(sizeValue>=0 && strcmp(PyString_AsString(key),"value")==0){
+      char *buffer=NULL;//(char*)malloc((sizeValue+1)*sizeof(char));
+      Py_ssize_t size;
+      PyString_AsStringAndSize(value,&buffer,&size);
+      if(res!=NULL){
+	addToMap(res,PyString_AsString(key),"");
+      }else{
+	res=createMap(PyString_AsString(key),"");
+      }
+      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;
+    }else{
+      if(res!=NULL)
+	addToMap(res,PyString_AsString(key),PyString_AsString(value));
+      else
+	res=createMap(PyString_AsString(key),PyString_AsString(value));
+    }
+    Py_DECREF(value);
+    Py_DECREF(key);
+  }
+  Py_DECREF(list);
   return res;
 }
