+++ /dev/null
-Description: close the file handle in time, increase space allocated for handleName and shandleName
-Origin: https://www.androwish.org/index.html/vpatch?from=e4864fde820aac71&to=ce9a5b5886ac7381
-Author: Christian Werner <chw@ch-werner.de>
-Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=719441
-Forwarded: yes, email
-
-Index: tclcurl/generic/tclcurl.c
-===================================================================
---- tclcurl.orig/generic/tclcurl.c
-+++ tclcurl/generic/tclcurl.c
-@@ -87,7 +87,7 @@ curlCreateObjCmd (Tcl_Interp *interp,str
- Tcl_Command cmdToken;
-
- /* We try with curl1, if it already exists with curl2...*/
-- handleName=(char *)Tcl_Alloc(10);
-+ handleName=(char *)Tcl_Alloc(32);
- for (i=1;;i++) {
- sprintf(handleName,"curl%d",i);
- if (!Tcl_GetCommandInfo(interp,handleName,&info)) {
-@@ -483,6 +483,12 @@ curlSetOpts(Tcl_Interp *interp, struct c
- case 2:
- Tcl_Free(curlData->inFile);
- curlData->inFile=curlstrdup(Tcl_GetString(objv));
-+ if (curlData->inFlag) {
-+ if (curlData->inHandle!=NULL) {
-+ fclose(curlData->inHandle);
-+ curlData->inHandle=NULL;
-+ }
-+ }
- if ((strcmp(curlData->inFile,""))&&(strcmp(curlData->inFile,"stdin"))) {
- curlData->inFlag=1;
- } else {
-@@ -914,6 +920,13 @@ curlSetOpts(Tcl_Interp *interp, struct c
- case 44:
- Tcl_Free(curlData->headerFile);
- curlData->headerFile=curlstrdup(Tcl_GetString(objv));
-+ if (curlData->headerFlag) {
-+ if (curlData->headerHandle!=NULL) {
-+ fclose(curlData->headerHandle);
-+ curlData->headerHandle=NULL;
-+ }
-+ curl_easy_setopt(curlHandle,CURLOPT_HEADERDATA,NULL);
-+ }
- if ((strcmp(curlData->headerFile,""))&&(strcmp(curlData->headerFile,"stdout"))
- &&(strcmp(curlData->headerFile,"stderr"))) {
- curlData->headerFlag=1;
-@@ -1035,6 +1048,14 @@ curlSetOpts(Tcl_Interp *interp, struct c
- }
- break;
- case 61:
-+ if (curlData->headerFlag) {
-+ if (curlData->headerHandle!=NULL) {
-+ fclose(curlData->headerHandle);
-+ curlData->headerHandle=NULL;
-+ }
-+ curl_easy_setopt(curlHandle,CURLOPT_HEADERDATA,NULL);
-+ curlData->headerFlag=0;
-+ }
- if (curl_easy_setopt(curlHandle,CURLOPT_HEADERFUNCTION,
- curlHeaderReader)) {
- return TCL_ERROR;
-@@ -1114,6 +1135,13 @@ curlSetOpts(Tcl_Interp *interp, struct c
- break;
- case 66:
- curlData->readProc=curlstrdup(Tcl_GetString(objv));
-+ if (curlData->inFlag) {
-+ if (curlData->inHandle!=NULL) {
-+ fclose(curlData->inHandle);
-+ curlData->inHandle=NULL;
-+ }
-+ curl_easy_setopt(curlHandle,CURLOPT_READDATA,NULL);
-+ }
- curlData->inFlag=0;
- if (strcmp(curlData->readProc,"")) {
- if (curl_easy_setopt(curlHandle,CURLOPT_READFUNCTION,
-@@ -2439,12 +2467,14 @@ curlHeaderReader(void *ptr,size_t size,s
- headerContent[charLength]=0;
- /* There may be multiple 'Set-Cookie' headers, so we use a list */
- if (Tcl_StringCaseMatch(headerName,"Set-Cookie",1)) {
-- Tcl_SetVar2(curlData->interp,curlData->headerVar,headerName, \
-+ Tcl_SetVar2(curlData->interp,curlData->headerVar,headerName,
- headerContent,TCL_LIST_ELEMENT|TCL_APPEND_VALUE);
- } else {
- Tcl_SetVar2(curlData->interp,curlData->headerVar,headerName,
- headerContent,0);
- }
-+ Tcl_Free(headerContent);
-+ Tcl_Free(headerName);
- }
- regExp=Tcl_RegExpCompile(curlData->interp,"(^(HTTP|http)[^\r]+)(\r*)(\n)");
- match=Tcl_RegExpExec(curlData->interp,regExp,header,header);
-@@ -2457,6 +2487,7 @@ curlHeaderReader(void *ptr,size_t size,s
-
- Tcl_SetVar2(curlData->interp,curlData->headerVar,"http",
- httpStatus,0);
-+ Tcl_Free(httpStatus);
- }
- return size*nmemb;
- }
-@@ -4159,7 +4190,7 @@ curlCreateShareObjCmd (Tcl_Interp *inter
- Tcl_Command cmdToken;
-
- /* We try with scurl1, if it already exists with scurl2...*/
-- shandleName=(char *)Tcl_Alloc(10);
-+ shandleName=(char *)Tcl_Alloc(32);
- for (i=1;;i++) {
- sprintf(shandleName,"scurl%d",i);
- if (!Tcl_GetCommandInfo(interp,shandleName,&info)) {
+++ /dev/null
-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)) {