mirror of
https://github.com/isar/rusqlite.git
synced 2024-11-23 08:59:29 +08:00
parent
cd824aeaee
commit
7bd969b8fd
@ -158,15 +158,19 @@ impl<'a> ValueRef<'a> {
|
|||||||
ValueRef::Text(s)
|
ValueRef::Text(s)
|
||||||
}
|
}
|
||||||
ffi::SQLITE_BLOB => {
|
ffi::SQLITE_BLOB => {
|
||||||
let blob = ffi::sqlite3_value_blob(value);
|
let (blob, len) = (ffi::sqlite3_value_blob(value), ffi::sqlite3_value_bytes(value));
|
||||||
assert!(!blob.is_null(),
|
|
||||||
"unexpected SQLITE_BLOB value type with NULL data");
|
|
||||||
|
|
||||||
let len = ffi::sqlite3_value_bytes(value);
|
|
||||||
assert!(len >= 0,
|
assert!(len >= 0,
|
||||||
"unexpected negative return from sqlite3_value_bytes");
|
"unexpected negative return from sqlite3_value_bytes");
|
||||||
|
if len > 0 {
|
||||||
|
assert!(!blob.is_null(),
|
||||||
|
"unexpected SQLITE_BLOB value type with NULL data");
|
||||||
ValueRef::Blob(from_raw_parts(blob as *const u8, len as usize))
|
ValueRef::Blob(from_raw_parts(blob as *const u8, len as usize))
|
||||||
|
} else {
|
||||||
|
// The return value from sqlite3_value_blob() for a zero-length BLOB
|
||||||
|
// is a NULL pointer.
|
||||||
|
ValueRef::Blob(&[])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_ => unreachable!("sqlite3_value_type returned invalid value"),
|
_ => unreachable!("sqlite3_value_type returned invalid value"),
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user