diff --git a/src/dc_receive_imf.rs b/src/dc_receive_imf.rs index b52baa0b7..21010d955 100644 --- a/src/dc_receive_imf.rs +++ b/src/dc_receive_imf.rs @@ -948,10 +948,10 @@ unsafe fn create_or_lookup_group( if !field.is_null() && (*field).fld_type == MAILIMF_FIELD_MESSAGE_ID as libc::c_int { let fld_message_id: *mut mailimf_message_id = (*field).fld_data.fld_message_id; if !fld_message_id.is_null() { - if let Some(_grpid) = + if let Some(extracted_grpid) = dc_extract_grpid_from_rfc724_mid(as_str((*fld_message_id).mid_value)) { - grpid = to_cstring(_grpid); + grpid = extracted_grpid.strdup(); } else { grpid = 0 as *mut libc::c_char; } diff --git a/src/dc_tools.rs b/src/dc_tools.rs index e1e5423e6..f84d36d33 100644 --- a/src/dc_tools.rs +++ b/src/dc_tools.rs @@ -832,7 +832,7 @@ pub unsafe fn dc_extract_grpid_from_rfc724_mid_list(list: *const clist) -> *mut }; if let Some(grpid) = dc_extract_grpid_from_rfc724_mid(mid) { - return to_cstring(grpid); + return grpid.strdup(); } cur = if !cur.is_null() { (*cur).next @@ -2113,24 +2113,24 @@ mod tests { #[test] fn test_dc_extract_grpid_from_rfc724_mid() { - // Should return 0 if we pass invalid mid - let str = "foobar"; - let grpid = dc_extract_grpid_from_rfc724_mid(str); + // Should return None if we pass invalid mid + let mid = "foobar"; + let grpid = dc_extract_grpid_from_rfc724_mid(mid); assert_eq!(grpid, None); - // Should return 0 if grpid has a length which is not 11 or 16 - let str = "Gr.12345678.morerandom@domain.de"; - let grpid = dc_extract_grpid_from_rfc724_mid(str); + // Should return None if grpid has a length which is not 11 or 16 + let mid = "Gr.12345678.morerandom@domain.de"; + let grpid = dc_extract_grpid_from_rfc724_mid(mid); assert_eq!(grpid, None); // Should return extracted grpid for grpid with length of 11 - let str = "Gr.12345678901.morerandom@domain.de"; - let grpid = dc_extract_grpid_from_rfc724_mid(str); + let mid = "Gr.12345678901.morerandom@domain.de"; + let grpid = dc_extract_grpid_from_rfc724_mid(mid); assert_eq!(grpid, Some("12345678901")); // Should return extracted grpid for grpid with length of 11 - let str = "Gr.1234567890123456.morerandom@domain.de"; - let grpid = dc_extract_grpid_from_rfc724_mid(str); + let mid = "Gr.1234567890123456.morerandom@domain.de"; + let grpid = dc_extract_grpid_from_rfc724_mid(mid); assert_eq!(grpid, Some("1234567890123456")); }