X-Git-Url: https://git.sven.stormbind.net/?p=sven%2Ftclcurl.git;a=blobdiff_plain;f=debian%2Fpatches%2Fbts801734.patch;fp=debian%2Fpatches%2Fbts801734.patch;h=321bd305036f3f284bac287b5809e007bda2069c;hp=0000000000000000000000000000000000000000;hb=184a22eeddb724c8cb9218bf2c77fd9871ecbe7c;hpb=d97402733dcb1f0019d84cf12325a625265b0ea1 diff --git a/debian/patches/bts801734.patch b/debian/patches/bts801734.patch new file mode 100644 index 0000000..321bd30 --- /dev/null +++ b/debian/patches/bts801734.patch @@ -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 +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)) {