Fix ffi interoperability issue

Clients expect empty "dbfile" argument to be treated as NULL value.
This change fulfills their expectations.

Closes: #530
This commit is contained in:
Dmitry Bogatov
2019-09-18 23:56:10 +00:00
committed by holger krekel
parent 95d8665dbe
commit e0e82e1877
2 changed files with 10 additions and 1 deletions

View File

@@ -233,7 +233,7 @@ pub unsafe extern "C" fn dc_open(
let ffi_context = &*context;
let rust_cb = move |_ctx: &Context, evt: Event| ffi_context.translate_cb(evt);
let ctx = if blobdir.is_null() {
let ctx = if blobdir.is_null() || *blobdir == 0 {
Context::new(
Box::new(rust_cb),
ffi_context.os_name.clone(),

View File

@@ -475,6 +475,15 @@ mod tests {
assert!(dbfile2.is_file());
}
#[test]
fn test_with_empty_blobdir() {
let tmp = tempfile::tempdir().unwrap();
let dbfile = tmp.path().join("db.sqlite");
let blobdir = PathBuf::new();
let res = Context::with_blobdir(Box::new(|_, _| 0), "FakeOS".into(), dbfile, blobdir);
assert!(res.is_err());
}
#[test]
fn test_with_blobdir_not_exists() {
let tmp = tempfile::tempdir().unwrap();