From 40ef85c2af552f1449320ac71468910d48c2c651 Mon Sep 17 00:00:00 2001 From: gwenn Date: Tue, 7 Aug 2018 19:58:26 +0200 Subject: [PATCH] Fix array module --- src/vtab/array.rs | 1 - src/vtab/mod.rs | 7 +++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/vtab/array.rs b/src/vtab/array.rs index 4a47800..09501be 100644 --- a/src/vtab/array.rs +++ b/src/vtab/array.rs @@ -170,7 +170,6 @@ mod test { use Connection; #[test] - #[ignore] // cargo test --lib --features "array" -- --ignored fn test_array_module() { let db = Connection::open_in_memory().unwrap(); array::load_module(&db).unwrap(); diff --git a/src/vtab/mod.rs b/src/vtab/mod.rs index a59ae5f..529115e 100644 --- a/src/vtab/mod.rs +++ b/src/vtab/mod.rs @@ -459,7 +459,7 @@ impl<'a> Values<'a> { // `sqlite3_value_type` returns `SQLITE_NULL` for pointer. // So it seems not possible to enhance `ValueRef::from_value`. #[cfg(feature = "array")] - pub fn get_array(&self, idx: usize) -> Result> { + pub(crate) fn get_array(&self, idx: usize) -> Result> { use types::Value; let arg = self.args[idx]; let ptr = unsafe { ffi::sqlite3_value_pointer(arg, array::ARRAY_TYPE) }; @@ -467,7 +467,10 @@ impl<'a> Values<'a> { Ok(None) } else { Ok(Some(unsafe { - array::Array::from_raw(ptr as *const Vec) + let rc = array::Array::from_raw(ptr as *const Vec); + let array = rc.clone(); + array::Array::into_raw(rc); // don't consume it + array })) } }