diff --git a/src/vtab/csvtab.rs b/src/vtab/csvtab.rs index a49800f..b80bd3d 100644 --- a/src/vtab/csvtab.rs +++ b/src/vtab/csvtab.rs @@ -174,8 +174,7 @@ impl VTabCursor for CSVTabCursor { fn filter(&mut self, _idx_num: libc::c_int, _idx_str: *const libc::c_char, - _argc: libc::c_int, - _argv: *mut *mut ffi::sqlite3_value) + _args: &mut[*mut ffi::sqlite3_value]) -> Result<()> { { let offset_first_row = self.vtab().offset_first_row; diff --git a/src/vtab/int_array.rs b/src/vtab/int_array.rs index b8730a5..2052463 100644 --- a/src/vtab/int_array.rs +++ b/src/vtab/int_array.rs @@ -103,8 +103,7 @@ impl VTabCursor for IntArrayVTabCursor { fn filter(&mut self, _idx_num: libc::c_int, _idx_str: *const libc::c_char, - _argc: libc::c_int, - _argv: *mut *mut ffi::sqlite3_value) + _args: &mut[*mut ffi::sqlite3_value]) -> Result<()> { self.i = 0; Ok(()) diff --git a/src/vtab/mod.rs b/src/vtab/mod.rs index 8acc367..46b7e8a 100644 --- a/src/vtab/mod.rs +++ b/src/vtab/mod.rs @@ -60,8 +60,7 @@ pub trait VTabCursor>: Sized { fn filter(&mut self, idx_num: libc::c_int, idx_str: *const libc::c_char, - argc: libc::c_int, - argv: *mut *mut ffi::sqlite3_value) + args: &mut[*mut ffi::sqlite3_value]) -> Result<()>; /// Advance cursor to the next row of a result set initiated by `filter`. fn next(&mut self) -> Result<()>; @@ -259,9 +258,11 @@ unsafe extern "C" fn $filter(cursor: *mut ffi::sqlite3_vtab_cursor, argc: libc::c_int, argv: *mut *mut ffi::sqlite3_value) -> libc::c_int { + use std::slice; use vtab::cursor_error; + let mut args = slice::from_raw_parts_mut(argv, argc as usize); let cr = cursor as *mut $cursor; - cursor_error(cursor, (*cr).filter(idx_num, idx_str, argc, argv)) + cursor_error(cursor, (*cr).filter(idx_num, idx_str, &mut args)) } unsafe extern "C" fn $next(cursor: *mut ffi::sqlite3_vtab_cursor) -> libc::c_int { use vtab::cursor_error;