>From 03645f94573e7bb808c719bfb8fd3e57655a05c5 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Thu, 28 Apr 2011 22:37:15 +0200 Subject: [PATCH] dbd-sqlite3: Fix the conversion of blobs Convert a BLOB to a ByteArray. This allows a BLOB to contain a NULL byte that can be converted back to a ByteArray. --- packages/dbd-sqlite/ChangeLog | 4 ++++ packages/dbd-sqlite/sqlite3.c | 10 ++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/dbd-sqlite/ChangeLog b/packages/dbd-sqlite/ChangeLog index 2608bb5..adb7c9d 100644 --- a/packages/dbd-sqlite/ChangeLog +++ b/packages/dbd-sqlite/ChangeLog @@ -1,3 +1,7 @@ +2011-04-28 Holger Hans Peter Freyther + + * sqlite3.c: Convert ByteArray to BLOB, BLOB to ByteArray. + 2011-04-09 Paolo Bonzini * Statement.st: Move #resetAndClear inside an #ensure: block. diff --git a/packages/dbd-sqlite/sqlite3.c b/packages/dbd-sqlite/sqlite3.c index 1810b62..631734d 100644 --- a/packages/dbd-sqlite/sqlite3.c +++ b/packages/dbd-sqlite/sqlite3.c @@ -188,7 +188,8 @@ gst_sqlite3_exec (OOP self) tmpOOP = vmProxy->stringToOOP (sqlite3_column_text (stmt, i)); break; case SQLITE_BLOB: - tmpOOP = vmProxy->stringToOOP (sqlite3_column_text (stmt, i)); + tmpOOP = vmProxy->byteArrayToOOP (sqlite3_column_text (stmt, i), + sqlite3_column_bytes(stmt, i)); break; case SQLITE_NULL: tmpOOP = vmProxy->nilOOP; @@ -241,11 +242,12 @@ gst_sqlite3_bind (OOP self, OOP key, OOP value) (sqlite_int64) vmProxy->OOPToInt (value)); #endif - if (vmProxy->objectIsKindOf (value, vmProxy->stringClass) - || vmProxy->objectIsKindOf (value, vmProxy->byteArrayClass)) + if (vmProxy->objectIsKindOf (value, vmProxy->byteArrayClass)) + return sqlite3_bind_blob (stmt, index, vmProxy->OOPIndexedBase (value), + vmProxy->basicSize (value), SQLITE_TRANSIENT); + if (vmProxy->objectIsKindOf (value, vmProxy->stringClass)) return sqlite3_bind_text (stmt, index, vmProxy->OOPIndexedBase (value), vmProxy->basicSize (value), SQLITE_TRANSIENT); - if (vmProxy->objectIsKindOf (value, vmProxy->floatDClass)) return sqlite3_bind_double (stmt, index, vmProxy->OOPToFloat (value)); -- 1.7.4.1