From b1b3a7702eab3bf9ad45494c520d2a6c02b4bc70 Mon Sep 17 00:00:00 2001
From: Stephan Meier <stephan.meier@pawisda.de>
Date: Tue, 21 Jul 2015 14:23:05 +0200
Subject: [PATCH] Fix curl_formadd() for CURLFORM_CONTENTSLENGTH == 0

---
 generic/tclcurl.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/generic/tclcurl.c b/generic/tclcurl.c
index 5e7aea3..21c947c 100755
--- a/generic/tclcurl.c
+++ b/generic/tclcurl.c
@@ -748,8 +748,13 @@ curlSetOpts(Tcl_Interp *interp, struct curlObjData *curlData,
 /*                        fprintf(stdout,"Section contents: %s\n",Tcl_GetString(httpPostData[i+1]));*/
                         tmpStr=Tcl_GetStringFromObj(httpPostData[i+1],&curlformBufferSize);
                         formArray[formArrayIndex].option = CURLFORM_COPYCONTENTS;
-                        formArray[formArrayIndex].value  = (char *)
-                                memcpy(Tcl_Alloc(curlformBufferSize), tmpStr, curlformBufferSize);
+
+                        formArray[formArrayIndex].value = Tcl_Alloc((curlformBufferSize > 0) ? curlformBufferSize : 1);
+                        if (curlformBufferSize > 0) {
+                                memcpy((char *)formArray[formArrayIndex].value,tmpStr,curlformBufferSize);
+                        } else {
+                                memset((char *)formArray[formArrayIndex].value,0,1);
+                        }
 
                         formArrayIndex++;
                         formArray[formArrayIndex].option = CURLFORM_CONTENTSLENGTH;