]> git.sven.stormbind.net Git - sven/tclcurl.git/blobdiff - debian/patches/bts801734.patch
Add d/patches/bts801734.patch - thanks to Christian Werner!
[sven/tclcurl.git] / debian / patches / bts801734.patch
diff --git a/debian/patches/bts801734.patch b/debian/patches/bts801734.patch
new file mode 100644 (file)
index 0000000..321bd30
--- /dev/null
@@ -0,0 +1,52 @@
+Description: close the file handle in time in case -file option is used 
+Origin: https://www.androwish.org/index.html/vpatch?from=9afc8918cdeec6d7&to=e4864fde820aac71
+Author: Christian Werner <chw@ch-werner.de>
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801734
+Forwarded: yes, email
+
+Index: b/generic/tclcurl.c
+===================================================================
+--- a/generic/tclcurl.c
++++ b/generic/tclcurl.c
+@@ -465,6 +465,12 @@ curlSetOpts(Tcl_Interp *interp, struct c
+         case 1:
+             Tcl_Free(curlData->outFile);
+             curlData->outFile=curlstrdup(Tcl_GetString(objv));
++            if (curlData->outFlag) {
++                if (curlData->outHandle!=NULL) {
++                    fclose(curlData->outHandle);
++                    curlData->outHandle=NULL;
++                }
++            }
+             if ((strcmp(curlData->outFile,""))&&(strcmp(curlData->outFile,"stdout"))) {
+                 curlData->outFlag=1;
+             } else {
+@@ -1043,6 +1049,14 @@ curlSetOpts(Tcl_Interp *interp, struct c
+         case 62:
+             Tcl_Free(curlData->bodyVarName);
+             curlData->bodyVarName=curlstrdup(Tcl_GetString(objv));
++            if (curlData->outFlag) {
++                if (curlData->outHandle!=NULL) {
++                    fclose(curlData->outHandle);
++                    curlData->outHandle=NULL;
++                }
++                curl_easy_setopt(curlHandle,CURLOPT_WRITEDATA,NULL);
++            }
++            curlData->outFlag=0;
+             if (curl_easy_setopt(curlHandle,CURLOPT_WRITEFUNCTION,
+                     curlBodyReader)) {
+                 return TCL_ERROR;
+@@ -1080,6 +1094,13 @@ curlSetOpts(Tcl_Interp *interp, struct c
+             break;
+         case 65:
+             curlData->writeProc=curlstrdup(Tcl_GetString(objv));
++            if (curlData->outFlag) {
++                if (curlData->outHandle!=NULL) {
++                    fclose(curlData->outHandle);
++                    curlData->outHandle=NULL;
++                }
++                curl_easy_setopt(curlHandle,CURLOPT_WRITEDATA,NULL);
++          }
+             curlData->outFlag=0;
+             if (curl_easy_setopt(curlHandle,CURLOPT_WRITEFUNCTION,
+                     curlWriteProcInvoke)) {