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>
This commit is contained in:
Sven Hoexter 2016-08-14 16:01:31 +02:00
parent c616ae3f10
commit 1fd1b4178a

View File

@ -465,6 +465,12 @@ curlSetOpts(Tcl_Interp *interp, struct curlObjData *curlData,
case 1: case 1:
Tcl_Free(curlData->outFile); Tcl_Free(curlData->outFile);
curlData->outFile=curlstrdup(Tcl_GetString(objv)); 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"))) { if ((strcmp(curlData->outFile,""))&&(strcmp(curlData->outFile,"stdout"))) {
curlData->outFlag=1; curlData->outFlag=1;
} else { } else {
@ -1064,6 +1070,14 @@ curlSetOpts(Tcl_Interp *interp, struct curlObjData *curlData,
case 62: case 62:
Tcl_Free(curlData->bodyVarName); Tcl_Free(curlData->bodyVarName);
curlData->bodyVarName=curlstrdup(Tcl_GetString(objv)); 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, if (curl_easy_setopt(curlHandle,CURLOPT_WRITEFUNCTION,
curlBodyReader)) { curlBodyReader)) {
return TCL_ERROR; return TCL_ERROR;
@ -1101,6 +1115,13 @@ curlSetOpts(Tcl_Interp *interp, struct curlObjData *curlData,
break; break;
case 65: case 65:
curlData->writeProc=curlstrdup(Tcl_GetString(objv)); 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; curlData->outFlag=0;
if (curl_easy_setopt(curlHandle,CURLOPT_WRITEFUNCTION, if (curl_easy_setopt(curlHandle,CURLOPT_WRITEFUNCTION,
curlWriteProcInvoke)) { curlWriteProcInvoke)) {