more changes

This commit is contained in:
vms 2021-04-12 11:40:33 +03:00
parent 38fb596f7c
commit af0ac14818
5 changed files with 11 additions and 30 deletions

View File

@ -29,7 +29,7 @@ EXPORT_FUNCS = \
--export=sqlite3_bind_blob_,$\ --export=sqlite3_bind_blob_,$\
--export=sqlite3_bind_double,$\ --export=sqlite3_bind_double,$\
--export=sqlite3_bind_int64,$\ --export=sqlite3_bind_int64,$\
--export=sqlite3_bind_text_,$\ --export=sqlite3_bind_text,$\
--export=sqlite3_bind_null,$\ --export=sqlite3_bind_null,$\
--export=sqlite3_column_count,$\ --export=sqlite3_column_count,$\
--export=sqlite3_column_double,$\ --export=sqlite3_column_double,$\

View File

@ -35,15 +35,12 @@ void sqlite3_exec_(
sqlite3_callback xCallback, /* Invoke this callback routine */ sqlite3_callback xCallback, /* Invoke this callback routine */
void *pArg /* First argument to xCallback() */ void *pArg /* First argument to xCallback() */
) __EXPORT_NAME(sqlite3_exec) { ) __EXPORT_NAME(sqlite3_exec) {
char *new_zSql = (char *) malloc(zSql_len + 1); zSql[zSql_len] = '\x00';
memcpy(new_zSql, zSql, zSql_len);
new_zSql[zSql_len] = 0;
free((void *)zSql);
char *pzErrMsg = 0; char *pzErrMsg = 0;
const int ret_code = sqlite3_exec(db, new_zSql, xCallback, pArg, &pzErrMsg); const int ret_code = sqlite3_exec(db, new_zSql, xCallback, pArg, &pzErrMsg);
free(new_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;
@ -52,6 +49,7 @@ void sqlite3_exec_(
result[4] = strlen(pzErrMsg); result[4] = strlen(pzErrMsg);
result[5] = 0; result[5] = 0;
add_object_to_release((void *) result);
set_result_ptr((char *)result); set_result_ptr((char *)result);
} }

View File

@ -2452,6 +2452,7 @@ 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);
set_result_ptr((char *)result); set_result_ptr((char *)result);
set_result_size(strlen(result)); set_result_size(strlen(result));
} }
@ -3458,6 +3459,7 @@ void sqlite3_open_v2_(
result[0] = ret_code; result[0] = ret_code;
result[2] = (int)ppDb; result[2] = (int)ppDb;
add_object_to_release((void *) result);
set_result_ptr((char *)result); set_result_ptr((char *)result);
} }

View File

@ -1113,10 +1113,7 @@ 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);
unsigned char *copied_result = malloc(blob_len); set_result_ptr((char *)blob);
memcpy(copied_result, blob, blob_len);
set_result_ptr((char *)copied_result);
set_result_size(blob_len); set_result_size(blob_len);
} }
@ -1160,10 +1157,7 @@ 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);
unsigned char *copied_text = malloc(text_len); set_result_ptr((char *)text);
memcpy(copied_text, text, text_len);
set_result_ptr((char *)copied_text);
set_result_size(text_len); set_result_size(text_len);
} }
@ -1262,6 +1256,7 @@ 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);
set_result_ptr((char *)result); set_result_ptr((char *)result);
set_result_size(strlen(result)); set_result_size(strlen(result));
} }
@ -1456,6 +1451,7 @@ int sqlite3_bind_blob_(
for (int char_id = 0; char_id < copied_nData; ++char_id) { for (int char_id = 0; char_id < copied_nData; ++char_id) {
copied_zData[char_id] = zData[char_id * 8]; copied_zData[char_id] = zData[char_id * 8];
} }
free(zData);
const int result = sqlite3_bind_blob(pStmt, i, copied_zData, copied_nData, 0); const int result = sqlite3_bind_blob(pStmt, i, copied_zData, copied_nData, 0);
@ -1539,21 +1535,6 @@ int sqlite3_bind_pointer(
return rc; return rc;
} }
int sqlite3_bind_text_(
sqlite3_stmt *pStmt,
int i,
const char *zData,
int nData,
void (*xDel)(void*)
) __EXPORT_NAME(sqlite3_bind_text) {
char *copied_zData = malloc(nData);
memcpy(copied_zData, zData, nData);
const int result = sqlite3_bind_text(pStmt, i, copied_zData, nData, xDel);
return result;
}
int sqlite3_bind_text( int sqlite3_bind_text(
sqlite3_stmt *pStmt, sqlite3_stmt *pStmt,
int i, int i,

View File

@ -19,7 +19,7 @@ void release_objects() {
OBJECTS_TO_RELEASE_COUNT = 0; OBJECTS_TO_RELEASE_COUNT = 0;
} }
void add_object_to_release(void *) { void add_object_to_release(void *object) {
} }