From cb62ab800e593cab3c24bc4732bb23453c79e439 Mon Sep 17 00:00:00 2001 From: vms Date: Thu, 28 Jan 2021 00:13:52 +0300 Subject: [PATCH] fix sqlite3_bind_blob --- src/vdbeapi.c | 16 ++++++++++++---- src/wrapper.c | 1 - 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/vdbeapi.c b/src/vdbeapi.c index 7b7e5b0..9ea0fe8 100644 --- a/src/vdbeapi.c +++ b/src/vdbeapi.c @@ -1442,14 +1442,22 @@ static int bindText( int sqlite3_bind_blob_( sqlite3_stmt *pStmt, int i, - const void *zData, + char *zData, int nData, void (*xDel)(void*) ) __EXPORT_NAME(sqlite3_bind_blob) { - char *copied_zData = malloc(nData); - memcpy(copied_zData, zData, nData); + const int copied_nData = nData / 8; + char *copied_zData = malloc(copied_nData); - const int result = sqlite3_bind_blob(pStmt, i, copied_zData, nData, xDel); + if (copied_zData == 0) { + return -1; + } + + for (int char_id = 0; char_id < copied_nData; ++char_id) { + copied_zData[char_id] = zData[char_id * 8]; + } + + const int result = sqlite3_bind_blob(pStmt, i, copied_zData, copied_nData, 0); return result; } diff --git a/src/wrapper.c b/src/wrapper.c index cc38a47..56a9f67 100644 --- a/src/wrapper.c +++ b/src/wrapper.c @@ -28,4 +28,3 @@ int get_result_size(void) { const char *get_result_ptr() { return RESULT_PTR; } -