From 966bb2271aaca0f622960f8311fafb9f9954dce3 Mon Sep 17 00:00:00 2001 From: jikstra Date: Sat, 10 Aug 2019 16:47:38 +0200 Subject: [PATCH] Put something into the msg object if we fail to get a valid string out of the db --- src/dc_chat.rs | 1 + src/dc_msg.rs | 31 +++++++++++++++++++++++++------ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/dc_chat.rs b/src/dc_chat.rs index 5497ad927..14b6a73de 100644 --- a/src/dc_chat.rs +++ b/src/dc_chat.rs @@ -1081,6 +1081,7 @@ pub fn dc_get_chat_msgs( let process_rows = |rows: rusqlite::MappedRows<_>| { for row in rows { let (curr_id, ts) = row?; + //println!("{}", curr_id); if curr_id as u32 == marker1before { ret.add_id(1); } diff --git a/src/dc_msg.rs b/src/dc_msg.rs index 963cb6ed4..c86a3cb7a 100644 --- a/src/dc_msg.rs +++ b/src/dc_msg.rs @@ -436,8 +436,12 @@ pub unsafe fn dc_msg_get_timestamp(msg: *const dc_msg_t) -> i64 { }; } +//pub fn dc_msg_load_from_db_r(context: &'a Context, id: u32) -> Result { +//} + pub fn dc_msg_load_from_db<'a>(msg: *mut dc_msg_t<'a>, context: &'a Context, id: u32) -> bool { if msg.is_null() { + println!("xxx msg is null {}", id); return false; } @@ -472,7 +476,15 @@ pub fn dc_msg_load_from_db<'a>(msg: *mut dc_msg_t<'a>, context: &'a Context, id: (*msg).type_0 = row.get(12)?; (*msg).state = row.get(13)?; (*msg).is_dc_message = row.get(14)?; - (*msg).text = row.get::<_, Option>(15)?; + println!("Before2 text: {}", id); + (*msg).text = match row.get(15) { + Ok(text) => Some(text), + Err(e) => { + warn!(context, 0, "dc_msg_load_from_db: could not get text column for id {} because of {}", id, e); + Some("[ Could not read from db ]".to_string()) + } + }; + println!("After text: {}", id); (*msg).param = row.get::<_, String>(16)?.parse().unwrap_or_default(); (*msg).starred = row.get(17)?; (*msg).hidden = row.get(18)?; @@ -491,8 +503,12 @@ pub fn dc_msg_load_from_db<'a>(msg: *mut dc_msg_t<'a>, context: &'a Context, id: Ok(()) } }); - - res.is_ok() + // HERE WE ARE! + if let Err(e) = res { + warn!(context, 0, "Error in msg_load_from_db for id {} because of {}", id, e); + return false; + } + true } pub unsafe fn dc_get_mime_headers(context: &Context, msg_id: uint32_t) -> *mut libc::c_char { @@ -628,14 +644,17 @@ pub fn dc_star_msgs( } pub unsafe fn dc_get_msg<'a>(context: &'a Context, msg_id: uint32_t) -> *mut dc_msg_t<'a> { - let mut success: libc::c_int = 0i32; + let mut success = false; let obj: *mut dc_msg_t = dc_msg_new_untyped(context); if dc_msg_load_from_db(obj, context, msg_id) { - success = 1i32 + success = true } - if 0 != success { + + + if success { obj } else { + println!("No success for {}", msg_id); dc_msg_unref(obj); 0 as *mut dc_msg_t }