[Zope-Checkins] CVS: Products/DCOracle2/src - dco2.c:1.135
Matthew T. Kromer
matt at zope.com
Wed Aug 27 11:40:03 EDT 2003
Update of /cvs-repository/Products/DCOracle2/src
In directory cvs.zope.org:/tmp/cvs-serv28981/src
Modified Files:
dco2.c
Log Message:
Fix a memory leak reported by Mihai Ibanescu <misa at redhat.com> where a call
to OCIParamGet did not have a OCIDescriptorFree associated with it. The leak
was not bad until Oracle 9.2, but then it was terrible.
=== Products/DCOracle2/src/dco2.c 1.134 => 1.135 ===
--- Products/DCOracle2/src/dco2.c:1.134 Mon Aug 11 10:33:15 2003
+++ Products/DCOracle2/src/dco2.c Wed Aug 27 10:40:02 2003
@@ -2242,6 +2242,12 @@
Py_DECREF(result);
return RaiseOCIError(self->errhp, OCI_HTYPE_ERROR);
} */ /* Eat errors here */
+
+ TRACE(T_HCALL,("ssA","OCIDescriptorFree","OCI_DTYPE_PARAM",
+ cparamh));
+ status = OCIDescriptorFree(cparamh, OCI_DTYPE_PARAM);
+ TRACE(T_HRETURN,("sR","OCIDescriptorFree", status));
+
}
TRACE(T_EXIT,("sA", "listColumns", result));
@@ -3539,6 +3545,15 @@
status = OCI_SUCCESS;
for (pos = 1; status == OCI_SUCCESS; pos++) {
+
+ if (paramd != NULL) {
+ TRACE(T_HCALL,("ssA","OCIDescriptorFree","OCI_DTYPE_PARAM",
+ paramd));
+ status = OCIDescriptorFree(paramd, OCI_DTYPE_PARAM);
+ TRACE(T_HRETURN,("sR","OCIDescriptorFree", status));
+ paramd = NULL;
+ }
+
TRACE(T_HCALL,("sAsAd", "OCIParamGet", self->stmtp,
"OCI_HTYPE_STMT", ¶md, pos));
status = OCIParamGet(self->stmtp, OCI_HTYPE_STMT,
@@ -3640,6 +3655,14 @@
}
Py_DECREF(tuple);
+ }
+
+ if (paramd != NULL) {
+ TRACE(T_HCALL,("ssA","OCIDescriptorFree","OCI_DTYPE_PARAM",
+ paramd));
+ status = OCIDescriptorFree(paramd, OCI_DTYPE_PARAM);
+ TRACE(T_HRETURN,("sR","OCIDescriptorFree", status));
+ paramd = NULL;
}
if (self->definition != NULL) {
More information about the Zope-Checkins
mailing list