mirror of
https://github.com/fluencelabs/sqlite
synced 2025-04-24 17:02:14 +00:00
fix: bind_text and bind_blob string arguments clean up (#18)
This commit is contained in:
parent
8a97f5ca7b
commit
258b8d11b6
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,4 +1,4 @@
|
|||||||
wasi-sdk
|
wasi-sdk*
|
||||||
# IntelliJ
|
# IntelliJ
|
||||||
.idea
|
.idea
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ RUN apt update \
|
|||||||
libtinfo6 \
|
libtinfo6 \
|
||||||
cargo
|
cargo
|
||||||
|
|
||||||
RUN cargo install marine
|
RUN cargo install marine --version 0.12.7
|
||||||
|
|
||||||
VOLUME /code
|
VOLUME /code
|
||||||
WORKDIR /code
|
WORKDIR /code
|
||||||
|
4
Makefile
4
Makefile
@ -26,10 +26,10 @@ EXPORT_FUNCS = \
|
|||||||
--export=sqlite3_column_name_,$\
|
--export=sqlite3_column_name_,$\
|
||||||
--export=sqlite3_step,$\
|
--export=sqlite3_step,$\
|
||||||
--export=sqlite3_reset,$\
|
--export=sqlite3_reset,$\
|
||||||
--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,$\
|
||||||
|
@ -1528,21 +1528,30 @@ static int bindText(sqlite3_stmt *pStmt, /* The statement to bind against */
|
|||||||
/*
|
/*
|
||||||
** Bind a blob value to an SQL statement variable.
|
** Bind a blob value to an SQL statement variable.
|
||||||
*/
|
*/
|
||||||
int sqlite3_bind_blob(sqlite3_stmt *pStmt, int i, const void *zData, int nData,
|
#ifndef __sqlite_unmodified_upstream
|
||||||
void (*xDel)(void *)) {
|
int sqlite3_bind_blob_(sqlite3_stmt *pStmt, int i, const void *zData, int nData,
|
||||||
|
void (*xDel)(void *))
|
||||||
|
__attribute__((export_name("sqlite3_bind_blob"))) {
|
||||||
#ifdef SQLITE_ENABLE_API_ARMOR
|
#ifdef SQLITE_ENABLE_API_ARMOR
|
||||||
if (nData < 0)
|
if (nData < 0)
|
||||||
return SQLITE_MISUSE_BKPT;
|
return SQLITE_MISUSE_BKPT;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __sqlite_unmodified_upstream
|
|
||||||
return bindText(pStmt, i, zData, nData, xDel, 0);
|
|
||||||
#else
|
|
||||||
// xDel is a custom deallocator and if it is not SQLITE_STATIC
|
// xDel is a custom deallocator and if it is not SQLITE_STATIC
|
||||||
// due to our IT architecture it can't be provided from other modules.
|
// due to our IT architecture it can't be provided from other modules.
|
||||||
return bindText(pStmt, i, zData, nData,
|
// However the memory zData uses has to be cleaned up eventually.
|
||||||
(xDel==SQLITE_STATIC || xDel==SQLITE_TRANSIENT)?xDel:free, 0);
|
add_object_to_release((void*)zData);
|
||||||
|
return bindText(pStmt, i, zData, nData, xDel, 0);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int sqlite3_bind_blob(sqlite3_stmt *pStmt, int i, const void *zData, int nData,
|
||||||
|
void (*xDel)(void *)) {
|
||||||
|
#ifdef SQLITE_ENABLE_API_ARMOR
|
||||||
|
if (nData < 0) return SQLITE_MISUSE_BKPT;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return bindText(pStmt, i, zData, nData, xDel, 0);
|
||||||
}
|
}
|
||||||
int sqlite3_bind_blob64(sqlite3_stmt *pStmt, int i, const void *zData,
|
int sqlite3_bind_blob64(sqlite3_stmt *pStmt, int i, const void *zData,
|
||||||
sqlite3_uint64 nData, void (*xDel)(void *)) {
|
sqlite3_uint64 nData, void (*xDel)(void *)) {
|
||||||
@ -1594,17 +1603,24 @@ int sqlite3_bind_pointer(sqlite3_stmt *pStmt, int i, void *pPtr,
|
|||||||
}
|
}
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sqlite3_bind_text(sqlite3_stmt *pStmt, int i, const char *zData, int nData,
|
int sqlite3_bind_text(sqlite3_stmt *pStmt, int i, const char *zData, int nData,
|
||||||
void (*xDel)(void *)) {
|
void (*xDel)(void *)) {
|
||||||
#ifdef __sqlite_unmodified_upstream
|
|
||||||
return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF8);
|
return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF8);
|
||||||
#else
|
}
|
||||||
|
|
||||||
|
#ifndef __sqlite_unmodified_upstream
|
||||||
|
int sqlite3_bind_text_(sqlite3_stmt *pStmt, int i, const char *zData, int nData,
|
||||||
|
void (*xDel)(void *))
|
||||||
|
__attribute__((export_name("sqlite3_bind_text"))) {
|
||||||
// xDel is a custom deallocator and if it is not SQLITE_STATIC
|
// xDel is a custom deallocator and if it is not SQLITE_STATIC
|
||||||
// due to our IT architecture it can't be provided from other modules.
|
// due to our IT architecture it can't be provided from other modules.
|
||||||
return bindText(pStmt, i, zData, nData,
|
// However the memory zData uses has to be cleaned up eventually.
|
||||||
(xDel==SQLITE_STATIC || xDel==SQLITE_TRANSIENT)?xDel:free, SQLITE_UTF8);
|
add_object_to_release((void*)zData);
|
||||||
#endif
|
return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF8);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int sqlite3_bind_text64(sqlite3_stmt *pStmt, int i, const char *zData,
|
int sqlite3_bind_text64(sqlite3_stmt *pStmt, int i, const char *zData,
|
||||||
sqlite3_uint64 nData, void (*xDel)(void *),
|
sqlite3_uint64 nData, void (*xDel)(void *),
|
||||||
unsigned char enc) {
|
unsigned char enc) {
|
||||||
|
@ -1 +1 @@
|
|||||||
0.18.0
|
0.18.1
|
Loading…
x
Reference in New Issue
Block a user