Author: Armin Rigo <[email protected]>
Branch:
Changeset: r44609:1af567d36578
Date: 2011-05-31 13:05 +0200
http://bitbucket.org/pypy/pypy/changeset/1af567d36578/
Log: (nekto0n) Fix module/oracle, including some missing lltype.free().
diff --git a/pypy/module/oracle/config.py b/pypy/module/oracle/config.py
--- a/pypy/module/oracle/config.py
+++ b/pypy/module/oracle/config.py
@@ -16,6 +16,7 @@
return space.str_w(w_obj)
def w_string(space, buf, len=-1):
+ #assert type(len) is int
if len < 0:
return space.wrap(rffi.charp2str(buf))
else:
diff --git a/pypy/module/oracle/interp_connect.py
b/pypy/module/oracle/interp_connect.py
--- a/pypy/module/oracle/interp_connect.py
+++ b/pypy/module/oracle/interp_connect.py
@@ -371,6 +371,7 @@
finally:
stringBuffer.clear()
lltype.free(foundptr, flavor='raw')
+ lltype.free(handleptr, flavor='raw')
# eliminate the authorization handle immediately, if applicable
if authInfo:
diff --git a/pypy/module/oracle/interp_cursor.py
b/pypy/module/oracle/interp_cursor.py
--- a/pypy/module/oracle/interp_cursor.py
+++ b/pypy/module/oracle/interp_cursor.py
@@ -459,7 +459,7 @@
self.environment.checkForError(
status,
"Cursor_ItemDescription(): name")
- name = rffi.charpsize2str(nameptr[0], lenptr[0])
+ name = rffi.charpsize2str(nameptr[0], rffi.cast(lltype.Signed,
lenptr[0]))
finally:
lltype.free(nameptr, flavor='raw')
lltype.free(lenptr, flavor='raw')
diff --git a/pypy/module/oracle/interp_object.py
b/pypy/module/oracle/interp_object.py
--- a/pypy/module/oracle/interp_object.py
+++ b/pypy/module/oracle/interp_object.py
@@ -38,7 +38,7 @@
self.environment.checkForError(
status,
"ObjectType_Initialize(): get schema name")
- self.schema = rffi.charpsize2str(nameptr[0], lenptr[0])
+ self.schema = rffi.charpsize2str(nameptr[0],
rffi.cast(lltype.Signed, lenptr[0]))
# determine the name of the type
status = roci.OCIAttrGet(
@@ -50,7 +50,7 @@
self.environment.checkForError(
status,
"ObjectType_Initialize(): get schema name")
- self.name = rffi.charpsize2str(nameptr[0], lenptr[0])
+ self.name = rffi.charpsize2str(nameptr[0],
rffi.cast(lltype.Signed, lenptr[0]))
finally:
lltype.free(nameptr, flavor='raw')
lltype.free(lenptr, flavor='raw')
@@ -301,7 +301,7 @@
connection.environment.checkForError(
status,
"ObjectAttribute_Initialize(): get name")
- self.name = rffi.charpsize2str(nameptr[0], lenptr[0])
+ self.name = rffi.charpsize2str(nameptr[0],
rffi.cast(lltype.Signed, lenptr[0]))
finally:
lltype.free(nameptr, flavor='raw')
lltype.free(lenptr, flavor='raw')
@@ -428,7 +428,7 @@
strValue = rffi.cast(roci.Ptr(roci.OCIString), value)[0]
ptr = roci.OCIStringPtr(environment.handle, strValue)
size = roci.OCIStringSize(environment.handle, strValue)
- return config.w_string(space, ptr, size)
+ return config.w_string(space, ptr, rffi.cast(lltype.Signed, size))
elif typeCode == roci.OCI_TYPECODE_NUMBER:
return transform.OracleNumberToPythonFloat(
environment,
diff --git a/pypy/module/oracle/interp_pool.py
b/pypy/module/oracle/interp_pool.py
--- a/pypy/module/oracle/interp_pool.py
+++ b/pypy/module/oracle/interp_pool.py
@@ -100,11 +100,13 @@
status, "SessionPool_New(): create pool")
self.w_name = config.w_string(space, poolnameptr[0],
- poolnamelenptr[0])
+ rffi.cast(lltype.Signed, poolnamelenptr[0]))
finally:
user_buf.clear()
password_buf.clear()
dsn_buf.clear()
+ lltype.free(poolnameptr, flavor='raw')
+ lltype.free(poolnamelenptr, flavor='raw')
return space.wrap(self)
@@ -128,10 +130,19 @@
self.checkConnected(space)
+ if __args__.keywords:
+ keywords = __args__.keywords + ["pool"]
+ else:
+ keywords = ["pool"]
+ if __args__.keywords_w:
+ keywords_w = __args__.keywords_w + [space.wrap(self)]
+ else:
+ keywords_w = [space.wrap(self)]
+
newargs = Arguments(space,
__args__.arguments_w,
- __args__.keywords + ["pool"],
- __args__.keywords_w + [space.wrap(self)])
+ keywords,
+ keywords_w)
return space.call_args(self.w_connectionType, newargs)
def release(self, space, w_connection):
diff --git a/pypy/module/oracle/interp_variable.py
b/pypy/module/oracle/interp_variable.py
--- a/pypy/module/oracle/interp_variable.py
+++ b/pypy/module/oracle/interp_variable.py
@@ -279,6 +279,7 @@
self.actualLength, self.returnCode,
allocatedElements, actualElementsPtr,
roci.OCI_DEFAULT)
+ nameBuffer.clear()
else:
status = roci.OCIBindByPos(
self.boundCursorHandle, bindHandlePtr,
@@ -733,6 +734,7 @@
finally:
rffi.keep_buffer_alive_until_here(textbuf, text)
lltype.free(sizeptr, flavor='raw')
+ format_buf.clear()
if isinstance(self, VT_NumberAsString):
return w_strvalue
@@ -779,6 +781,8 @@
format_buf.ptr, format_buf.size,
None, 0,
dataptr)
+ text_buf.clear()
+ format_buf.clear()
self.environment.checkForError(
status, "NumberVar_SetValue(): from long")
return
@@ -811,6 +815,8 @@
format_buf.ptr, format_buf.size,
nls_params, len(nls_params),
dataptr)
+ text_buf.clear()
+ format_buf.clear()
self.environment.checkForError(
status, "NumberVar_SetValue(): from decimal")
return
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit