mirror of
https://github.com/isar/rusqlite.git
synced 2025-10-07 12:02:19 +08:00
Improve Connection::extension_init2
This commit is contained in:
@@ -20,21 +20,15 @@ use rusqlite::{to_sqlite_error, Connection, Result};
|
||||
/// ```
|
||||
#[allow(clippy::not_unsafe_ptr_arg_deref)]
|
||||
#[no_mangle]
|
||||
pub extern "C" fn sqlite3_extension_init(
|
||||
pub unsafe extern "C" fn sqlite3_extension_init(
|
||||
db: *mut ffi::sqlite3,
|
||||
pz_err_msg: *mut *mut c_char,
|
||||
p_api: *mut ffi::sqlite3_api_routines,
|
||||
) -> c_int {
|
||||
if p_api.is_null() {
|
||||
return ffi::SQLITE_ERROR;
|
||||
} else if let Err(err) = extension_init(db, p_api) {
|
||||
return unsafe { to_sqlite_error(&err, pz_err_msg) };
|
||||
}
|
||||
ffi::SQLITE_OK
|
||||
Connection::extension_init2(db, pz_err_msg, p_api, extension_init)
|
||||
}
|
||||
|
||||
fn extension_init(db: *mut ffi::sqlite3, p_api: *mut ffi::sqlite3_api_routines) -> Result<()> {
|
||||
let db = unsafe { Connection::extension_init2(db, p_api)? };
|
||||
fn extension_init(db: Connection) -> Result<bool> {
|
||||
db.create_scalar_function(
|
||||
"rusqlite_test_function",
|
||||
0,
|
||||
@@ -46,5 +40,5 @@ fn extension_init(db: *mut ffi::sqlite3, p_api: *mut ffi::sqlite3_api_routines)
|
||||
},
|
||||
)?;
|
||||
rusqlite::trace::log(ffi::SQLITE_WARNING, "Rusqlite extension initialized");
|
||||
Ok(())
|
||||
Ok(false)
|
||||
}
|
||||
|
Reference in New Issue
Block a user