diff --git a/src/context.rs b/src/context.rs index 99d6749d7..29d8525a4 100644 --- a/src/context.rs +++ b/src/context.rs @@ -233,13 +233,8 @@ unsafe fn cb_precheck_imf( return rfc724_mid_exists; } -unsafe fn cb_set_config(context: &Context, key: *const libc::c_char, value: *const libc::c_char) { - let v = if value.is_null() { - None - } else { - Some(as_str(value)) - }; - context.sql.set_config(context, as_str(key), v).ok(); +fn cb_set_config(context: &Context, key: &str, value: Option<&str>) { + context.sql.set_config(context, key, value).ok(); } /* * diff --git a/src/imap.rs b/src/imap.rs index 17b544c49..3d6336299 100644 --- a/src/imap.rs +++ b/src/imap.rs @@ -914,13 +914,7 @@ impl Imap { let key = format!("imap.mailbox.{}", folder.as_ref()); let val = format!("{}:{}", uidvalidity, lastseenuid); - unsafe { - let key_c = to_cstring(key); - let val_c = to_cstring(val); - (self.set_config)(context, key_c, val_c); - free(key_c as *mut _); - free(val_c as *mut _); - }; + (self.set_config)(context, &key, Some(&val)); } fn fetch_single_msg>( diff --git a/src/types.rs b/src/types.rs index 47bcbd23c..f3d360333 100644 --- a/src/types.rs +++ b/src/types.rs @@ -34,8 +34,7 @@ the online state. */ pub type dc_precheck_imf_t = unsafe fn(_: &Context, _: *const libc::c_char, _: &str, _: u32) -> libc::c_int; -pub type dc_set_config_t = - unsafe fn(_: &Context, _: *const libc::c_char, _: *const libc::c_char) -> (); +pub type dc_set_config_t = fn(_: &Context, _: &str, _: Option<&str>) -> (); pub type dc_get_config_t = fn(_: &Context, _: &str) -> Option; pub type sqlite_int64 = i64;