]> git.sven.stormbind.net Git - sven/tclcurl.git/blob - debian/patches/bts801734.patch
Merge tag 'upstream/7.22.0+hg20160822'
[sven/tclcurl.git] / debian / patches / bts801734.patch
1 Description: close the file handle in time in case -file option is used 
2 Origin: https://www.androwish.org/index.html/vpatch?from=9afc8918cdeec6d7&to=e4864fde820aac71
3 Author: Christian Werner <chw@ch-werner.de>
4 Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801734
5 Forwarded: yes, email
6
7 Index: b/generic/tclcurl.c
8 ===================================================================
9 --- a/generic/tclcurl.c
10 +++ b/generic/tclcurl.c
11 @@ -465,6 +465,12 @@ curlSetOpts(Tcl_Interp *interp, struct c
12          case 1:
13              Tcl_Free(curlData->outFile);
14              curlData->outFile=curlstrdup(Tcl_GetString(objv));
15 +            if (curlData->outFlag) {
16 +                if (curlData->outHandle!=NULL) {
17 +                    fclose(curlData->outHandle);
18 +                    curlData->outHandle=NULL;
19 +                }
20 +            }
21              if ((strcmp(curlData->outFile,""))&&(strcmp(curlData->outFile,"stdout"))) {
22                  curlData->outFlag=1;
23              } else {
24 @@ -1043,6 +1049,14 @@ curlSetOpts(Tcl_Interp *interp, struct c
25          case 62:
26              Tcl_Free(curlData->bodyVarName);
27              curlData->bodyVarName=curlstrdup(Tcl_GetString(objv));
28 +            if (curlData->outFlag) {
29 +                if (curlData->outHandle!=NULL) {
30 +                    fclose(curlData->outHandle);
31 +                    curlData->outHandle=NULL;
32 +                }
33 +                curl_easy_setopt(curlHandle,CURLOPT_WRITEDATA,NULL);
34 +            }
35 +            curlData->outFlag=0;
36              if (curl_easy_setopt(curlHandle,CURLOPT_WRITEFUNCTION,
37                      curlBodyReader)) {
38                  return TCL_ERROR;
39 @@ -1080,6 +1094,13 @@ curlSetOpts(Tcl_Interp *interp, struct c
40              break;
41          case 65:
42              curlData->writeProc=curlstrdup(Tcl_GetString(objv));
43 +            if (curlData->outFlag) {
44 +                if (curlData->outHandle!=NULL) {
45 +                    fclose(curlData->outHandle);
46 +                    curlData->outHandle=NULL;
47 +                }
48 +                curl_easy_setopt(curlHandle,CURLOPT_WRITEDATA,NULL);
49 +           }
50              curlData->outFlag=0;
51              if (curl_easy_setopt(curlHandle,CURLOPT_WRITEFUNCTION,
52                      curlWriteProcInvoke)) {