some updates

This commit is contained in:
vms 2021-04-12 13:06:11 +03:00
parent 0820036f56
commit 2150b81cf6
7 changed files with 22 additions and 19 deletions

View File

@ -41,6 +41,7 @@ void sqlite3_exec_(
const int ret_code = sqlite3_exec(db, zSql, xCallback, pArg, &pzErrMsg);
free(zSql);
int *result = malloc(3*8);
result[0] = ret_code;
result[1] = 0;
@ -49,8 +50,10 @@ void sqlite3_exec_(
result[4] = strlen(pzErrMsg);
result[5] = 0;
// errmsg should be managed by user
add_object_to_release((void *) pzErrMsg);
add_object_to_release((void *) result);
set_result_ptr((char *)result);
set_result_ptr((void *) result);
}
int sqlite3_exec(

View File

@ -2452,8 +2452,8 @@ int sqlite3TempInMemory(const sqlite3 *db){
void sqlite3_errmsg_(sqlite3 *db) __EXPORT_NAME(sqlite3_errmsg) {
const char *result = sqlite3_errmsg(db);
add_object_to_release((void *) result);
set_result_ptr((char *)result);
// result is managed by SQLite itself
set_result_ptr((void *) result);
set_result_size(strlen(result));
}
@ -3460,7 +3460,7 @@ void sqlite3_open_v2_(
result[2] = (int)ppDb;
add_object_to_release((void *) result);
set_result_ptr((char *)result);
set_result_ptr((void *)result);
}
int sqlite3_open_v2(

View File

@ -788,11 +788,11 @@ void sqlite3_prepare_v2_(
const char *zSql, /* UTF-8 encoded SQL statement. */
int nBytes /* Length of zSql in bytes. */
) __EXPORT_NAME(sqlite3_prepare_v2) {
sqlite3_stmt *ppStmt;
const char *pzTail;
sqlite3_stmt *ppStmt = NULL;
const char *pzTail = NULL;
const int ret_code = sqlite3_prepare_v2(db, zSql, nBytes, &ppStmt, &pzTail);
free((void *)zSql);
free((void *) zSql);
int *result = (int *)malloc(3*8);
result[0] = ret_code;
@ -800,7 +800,8 @@ void sqlite3_prepare_v2_(
result[4] = (int)pzTail;
result[5] = strlen(pzTail);
set_result_ptr((char *)result);
add_object_to_release((void *) result);
set_result_ptr((void *) result);
}
int sqlite3_prepare_v2(

View File

@ -37,9 +37,6 @@
#define __EXPORT_NAME(name) \
__attribute__((export_name(#name)))
void set_result_ptr(const char *ptr);
void set_result_size(int size);
/*
** Make sure we can call this stuff from C++.
*/

View File

@ -4911,7 +4911,7 @@ const char **sqlite3CompileOptions(int *pnOpt);
#ifndef __sqlite_unmodified_upstram
void add_object_to_release(void *object);
void set_result_ptr(const char *ptr);
void set_result_ptr(void *ptr);
void set_result_size(int size);
#endif

View File

@ -1113,7 +1113,8 @@ void sqlite3_column_blob_(sqlite3_stmt *pStmt, int i) __EXPORT_NAME(sqlite3_colu
const char *blob = sqlite3_column_blob(pStmt, i);
int blob_len = sqlite3_column_bytes(pStmt, i);
set_result_ptr((char *)blob);
// blob is managed by SQLite itself
set_result_ptr((void *)blob);
set_result_size(blob_len);
}
@ -1157,7 +1158,8 @@ void sqlite3_column_text_(sqlite3_stmt *pStmt, int i) __EXPORT_NAME(sqlite3_colu
const unsigned char *text = sqlite3_column_text(pStmt, i);
const unsigned int text_len = sqlite3_column_bytes(pStmt, i);
set_result_ptr((char *)text);
// test is managed by SQLite itself
set_result_ptr((void *) text);
set_result_size(text_len);
}
@ -1256,8 +1258,8 @@ static const void *columnName(
void sqlite3_column_name_(sqlite3_stmt *pStmt, int N) __EXPORT_NAME(sqlite3_column_name) {
const char *result = sqlite3_column_name(pStmt, N);
add_object_to_release((void *) result);
set_result_ptr((char *)result);
// result is managed by SQLite itself
set_result_ptr((void *)result);
set_result_size(strlen(result));
}

View File

@ -3,7 +3,7 @@
#include <stdlib.h>
const char *RESULT_PTR;
void *RESULT_PTR;
int RESULT_SIZE;
cvector_vector_type(void *) OBJECTS_TO_RELEASE;
@ -27,7 +27,7 @@ void add_object_to_release(void *object) {
cvector_push_back(OBJECTS_TO_RELEASE, object);
}
void set_result_ptr(const char *ptr) {
void set_result_ptr(void *ptr) {
RESULT_PTR = ptr;
}
@ -39,7 +39,7 @@ int get_result_size(void) {
return RESULT_SIZE;
}
const char *get_result_ptr() {
void *get_result_ptr() {
return RESULT_PTR;
}