dc_get_chat_contacts should always return an array and never a null

pointer otherwise we break the ffi interface
This commit is contained in:
jikstra
2019-08-13 00:11:06 +02:00
parent 16f891c290
commit 80c727ee9f

View File

@@ -1410,10 +1410,9 @@ pub fn dc_get_chat_contacts(context: &Context, chat_id: u32) -> *mut dc_array_t
/* Normal chats do not include SELF. Group chats do (as it may happen that one is deleted from a /* Normal chats do not include SELF. Group chats do (as it may happen that one is deleted from a
groupchat but the chats stays visible, moreover, this makes displaying lists easier) */ groupchat but the chats stays visible, moreover, this makes displaying lists easier) */
if chat_id == 1 {
return std::ptr::null_mut();
}
let ret = if chat_id != 1 {
// we could also create a list for all contacts in the deaddrop by searching contacts belonging to chats with // we could also create a list for all contacts in the deaddrop by searching contacts belonging to chats with
// chats.blocked=2, however, currently this is not needed // chats.blocked=2, however, currently this is not needed
@@ -1434,8 +1433,18 @@ pub fn dc_get_chat_contacts(context: &Context, chat_id: u32) -> *mut dc_array_t
Ok(ret.into_raw()) Ok(ret.into_raw())
}, },
) ).ok()
.unwrap_or_else(|_| std::ptr::null_mut()) } else {
None
};
if let Some(chat_contacts) = ret {
chat_contacts
} else {
dc_array_t::new(0).into_raw()
}
} }
pub unsafe fn dc_get_chat(context: &Context, chat_id: uint32_t) -> *mut Chat { pub unsafe fn dc_get_chat(context: &Context, chat_id: uint32_t) -> *mut Chat {