mirror of
https://github.com/fluencelabs/sqlite
synced 2025-04-25 09:22:15 +00:00
some updates
This commit is contained in:
parent
0820036f56
commit
2150b81cf6
@ -41,6 +41,7 @@ void sqlite3_exec_(
|
|||||||
const int ret_code = sqlite3_exec(db, zSql, xCallback, pArg, &pzErrMsg);
|
const int ret_code = sqlite3_exec(db, zSql, xCallback, pArg, &pzErrMsg);
|
||||||
|
|
||||||
free(zSql);
|
free(zSql);
|
||||||
|
|
||||||
int *result = malloc(3*8);
|
int *result = malloc(3*8);
|
||||||
result[0] = ret_code;
|
result[0] = ret_code;
|
||||||
result[1] = 0;
|
result[1] = 0;
|
||||||
@ -49,8 +50,10 @@ void sqlite3_exec_(
|
|||||||
result[4] = strlen(pzErrMsg);
|
result[4] = strlen(pzErrMsg);
|
||||||
result[5] = 0;
|
result[5] = 0;
|
||||||
|
|
||||||
|
// errmsg should be managed by user
|
||||||
|
add_object_to_release((void *) pzErrMsg);
|
||||||
add_object_to_release((void *) result);
|
add_object_to_release((void *) result);
|
||||||
set_result_ptr((char *)result);
|
set_result_ptr((void *) result);
|
||||||
}
|
}
|
||||||
|
|
||||||
int sqlite3_exec(
|
int sqlite3_exec(
|
||||||
|
@ -2452,8 +2452,8 @@ int sqlite3TempInMemory(const sqlite3 *db){
|
|||||||
void sqlite3_errmsg_(sqlite3 *db) __EXPORT_NAME(sqlite3_errmsg) {
|
void sqlite3_errmsg_(sqlite3 *db) __EXPORT_NAME(sqlite3_errmsg) {
|
||||||
const char *result = sqlite3_errmsg(db);
|
const char *result = sqlite3_errmsg(db);
|
||||||
|
|
||||||
add_object_to_release((void *) result);
|
// result is managed by SQLite itself
|
||||||
set_result_ptr((char *)result);
|
set_result_ptr((void *) result);
|
||||||
set_result_size(strlen(result));
|
set_result_size(strlen(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3460,7 +3460,7 @@ void sqlite3_open_v2_(
|
|||||||
result[2] = (int)ppDb;
|
result[2] = (int)ppDb;
|
||||||
|
|
||||||
add_object_to_release((void *) result);
|
add_object_to_release((void *) result);
|
||||||
set_result_ptr((char *)result);
|
set_result_ptr((void *)result);
|
||||||
}
|
}
|
||||||
|
|
||||||
int sqlite3_open_v2(
|
int sqlite3_open_v2(
|
||||||
|
@ -788,8 +788,8 @@ void sqlite3_prepare_v2_(
|
|||||||
const char *zSql, /* UTF-8 encoded SQL statement. */
|
const char *zSql, /* UTF-8 encoded SQL statement. */
|
||||||
int nBytes /* Length of zSql in bytes. */
|
int nBytes /* Length of zSql in bytes. */
|
||||||
) __EXPORT_NAME(sqlite3_prepare_v2) {
|
) __EXPORT_NAME(sqlite3_prepare_v2) {
|
||||||
sqlite3_stmt *ppStmt;
|
sqlite3_stmt *ppStmt = NULL;
|
||||||
const char *pzTail;
|
const char *pzTail = NULL;
|
||||||
|
|
||||||
const int ret_code = sqlite3_prepare_v2(db, zSql, nBytes, &ppStmt, &pzTail);
|
const int ret_code = sqlite3_prepare_v2(db, zSql, nBytes, &ppStmt, &pzTail);
|
||||||
free((void *) zSql);
|
free((void *) zSql);
|
||||||
@ -800,7 +800,8 @@ void sqlite3_prepare_v2_(
|
|||||||
result[4] = (int)pzTail;
|
result[4] = (int)pzTail;
|
||||||
result[5] = strlen(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(
|
int sqlite3_prepare_v2(
|
||||||
|
@ -37,9 +37,6 @@
|
|||||||
#define __EXPORT_NAME(name) \
|
#define __EXPORT_NAME(name) \
|
||||||
__attribute__((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++.
|
** Make sure we can call this stuff from C++.
|
||||||
*/
|
*/
|
||||||
|
@ -4911,7 +4911,7 @@ const char **sqlite3CompileOptions(int *pnOpt);
|
|||||||
#ifndef __sqlite_unmodified_upstram
|
#ifndef __sqlite_unmodified_upstram
|
||||||
void add_object_to_release(void *object);
|
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);
|
void set_result_size(int size);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -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);
|
const char *blob = sqlite3_column_blob(pStmt, i);
|
||||||
int blob_len = sqlite3_column_bytes(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);
|
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 char *text = sqlite3_column_text(pStmt, i);
|
||||||
const unsigned int text_len = sqlite3_column_bytes(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);
|
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) {
|
void sqlite3_column_name_(sqlite3_stmt *pStmt, int N) __EXPORT_NAME(sqlite3_column_name) {
|
||||||
const char *result = sqlite3_column_name(pStmt, N);
|
const char *result = sqlite3_column_name(pStmt, N);
|
||||||
|
|
||||||
add_object_to_release((void *) result);
|
// result is managed by SQLite itself
|
||||||
set_result_ptr((char *)result);
|
set_result_ptr((void *)result);
|
||||||
set_result_size(strlen(result));
|
set_result_size(strlen(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
const char *RESULT_PTR;
|
void *RESULT_PTR;
|
||||||
int RESULT_SIZE;
|
int RESULT_SIZE;
|
||||||
|
|
||||||
cvector_vector_type(void *) OBJECTS_TO_RELEASE;
|
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);
|
cvector_push_back(OBJECTS_TO_RELEASE, object);
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_result_ptr(const char *ptr) {
|
void set_result_ptr(void *ptr) {
|
||||||
RESULT_PTR = ptr;
|
RESULT_PTR = ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ int get_result_size(void) {
|
|||||||
return RESULT_SIZE;
|
return RESULT_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *get_result_ptr() {
|
void *get_result_ptr() {
|
||||||
return RESULT_PTR;
|
return RESULT_PTR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user