Author: Armin Rigo <[email protected]>
Branch:
Changeset: r63047:a163d0d435d5
Date: 2013-04-05 11:57 +0200
http://bitbucket.org/pypy/pypy/changeset/a163d0d435d5/
Log: Add a failing test
diff --git a/lib_pypy/_sqlite3.py b/lib_pypy/_sqlite3.py
--- a/lib_pypy/_sqlite3.py
+++ b/lib_pypy/_sqlite3.py
@@ -218,7 +218,7 @@
const char **pzTail /* OUT: Pointer to unused portion of zSql */
);
-void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
+void sqlite3_result_blob(sqlite3_context*, const char*, int, void(*)(void*));
void sqlite3_result_double(sqlite3_context*, double);
void sqlite3_result_error(sqlite3_context*, const char*, int);
void sqlite3_result_error16(sqlite3_context*, const void*, int);
diff --git a/pypy/module/test_lib_pypy/test_sqlite3.py
b/pypy/module/test_lib_pypy/test_sqlite3.py
--- a/pypy/module/test_lib_pypy/test_sqlite3.py
+++ b/pypy/module/test_lib_pypy/test_sqlite3.py
@@ -198,3 +198,15 @@
con = _sqlite3.connect(':memory:')
con.row_factory = 42
con.execute('select 1')
+
+def test_returning_blob_must_own_memory():
+ import gc
+ con = _sqlite3.connect(":memory:")
+ con.create_function("returnblob", 0, lambda: buffer("blob"))
+ cur = con.cursor()
+ cur.execute("select returnblob()")
+ val = cur.fetchone()[0]
+ for i in range(5):
+ gc.collect()
+ got = (val[0], val[1], val[2], val[3])
+ assert got == ('b', 'l', 'o', 'b')
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit