Majid,
Can you come up with a code sample or use case that demonstrates the
buggy behavior? That's the best way to show that it actually is a
problem, and that the changes fix the problem.
-J
Majid Khan wrote:
> Hello All,
> Just checking the code of nspostgres driver (downloaded from git) and
> found that the code needs some fixes. Couple of thing which I see
> 1- in nspostgres.c
> fucntion: static int blob_dml_file
> where we see these lines:
> if (fd == -1)
> {
> Ns_Log (Error, " Error opening file %s: %d(%s)", filename, errno,
> strerror(errno));
> Tcl_AppendResult (interp, "can't open file ", filename, " for reading.
> ", "received error ", strerror(errno), NULL);
> }
> Why to continue the process when we are unable to open the file?
> Shouldn't it be
> if (fd == -1)
> {
> Ns_Log (Error, " Error opening file %s: %d(%s)", filename, errno,
> strerror(errno));
> Tcl_AppendResult (interp, "can't open file ", filename, " for reading.
> ", "received error ", strerror(errno), NULL);
> *return TCL_ERROR;
> *}
> 2- In the same function where we have this:
> if (Ns_PgExec(handle, query) != NS_DML) {
> Tcl_DString errString;
> Tcl_DStringInit(&errString);
> Tcl_DStringAppend
> (&errString, "Error inserting data into BLOB\n", -1);
> if(handle->verbose)
> {
> append_PQresultStatus(&errString, nspgConn->res);
>
> Tcl_DStringAppend(&errString, "SQL: ", -1);
> Tcl_DStringAppend(&errString, query, -1);
> }
> Tcl_AppendResult(interp, Tcl_DStringValue(&errString), NULL);
> Tcl_DStringFree(&errString);
> return TCL_ERROR;
> }
> here while returning error we are not closing the file descriptor so I
> see a resource leak so it should be
> if (Ns_PgExec(handle, query) != NS_DML) {
> Tcl_DString errString;
> Tcl_DStringInit(&errString);
> Tcl_DStringAppend
> (&errString, "Error inserting data into BLOB\n", -1);
> if(handle->verbose)
> {
> append_PQresultStatus(&errString, nspgConn->res);
>
> Tcl_DStringAppend(&errString, "SQL: ", -1);
> Tcl_DStringAppend(&errString, query, -1);
> }
> Tcl_AppendResult(interp, Tcl_DStringValue(&errString), NULL);
> Tcl_DStringFree(&errString);
> *close(fd);
> * return TCL_ERROR;
> }
> Regards,
> Majid.
>
>
>
> ------------------------------------------------------------------------------
> Virtualization& Cloud Management Using Capacity Planning
> Cloud computing makes use of virtualization - but cloud computing
> also focuses on allowing computing to be delivered as a service.
> http://www.accelacomm.com/jaw/sfnl/114/51521223/
>
>
>
> _______________________________________________
> aolserver-talk mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/aolserver-talk
------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
aolserver-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/aolserver-talk