From: <as...@us...> - 2007-04-19 19:33:36
|
Update of /cvsroot/aolserver/nsoracle In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv19025 Modified Files: nsoracle.c Log Message: Prevent ORA-01405 when stored function returns NULL. Fixes memory leak. Index: nsoracle.c =================================================================== RCS file: /cvsroot/aolserver/nsoracle/nsoracle.c,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** nsoracle.c 22 Feb 2006 16:14:58 -0000 1.25 --- nsoracle.c 19 Apr 2007 19:33:33 -0000 1.26 *************** *** 567,571 **** oci_status_t oci_status; char *query, *buf; ! if (objc != 4) { Tcl_WrongNumArgs(interp, 2, objv, --- 567,581 ---- oci_status_t oci_status; char *query, *buf; ! ! /* This indicator variable is a dummy. We don't actually check the ! * status. Previously, we set the indp parameter to OCIBindByPos to ! * 0. Oracle would throw ORA-01405 and we would specifically ignore ! * it in tcl_error_p. Now we pass this dummy variable, and Oracle ! * returns OCI_SUCCESS whether or not the returned value is NULL. ! * This eliminates the need for explicitly handling ORA-01405 in ! * tcl_error_p. */ ! ! sb2 null_indicator; ! if (objc != 4) { Tcl_WrongNumArgs(interp, 2, objv, *************** *** 617,621 **** EXEC_PLSQL_BUFFER_SIZE, SQLT_STR, ! 0, 0, 0, --- 627,631 ---- EXEC_PLSQL_BUFFER_SIZE, SQLT_STR, ! &null_indicator, 0, 0, *************** *** 4388,4395 **** sizeof errorbuf, OCI_HTYPE_ERROR); - if (errorcode == 1405) { - return 0; - } - if (oci_status1) { snprintf(msgbuf, STACK_BUFFER_SIZE, "`OCIErrorGet ()' error"); --- 4398,4401 ---- |