From 34921db88f6cc49c94caf5ab53b6db6f160350f1 Mon Sep 17 00:00:00 2001 From: Lars-Magnus Skog Date: Wed, 29 May 2019 03:09:41 +0200 Subject: [PATCH] fix: peerstate.addr to c string in dc_handle_degrade_event() --- src/dc_securejoin.rs | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/src/dc_securejoin.rs b/src/dc_securejoin.rs index b83fa37da..86b670ae0 100644 --- a/src/dc_securejoin.rs +++ b/src/dc_securejoin.rs @@ -1078,17 +1078,15 @@ pub unsafe fn dc_handle_degrade_event(context: &Context, peerstate: &Peerstate) &context.sql.clone().read().unwrap(), b"SELECT id FROM contacts WHERE addr=?;\x00" as *const u8 as *const libc::c_char, ); - let c_addr = peerstate.addr.as_ref().map(to_cstring); - sqlite3_bind_text( - stmt, - 1i32, - c_addr - .as_ref() - .map(|a| a.as_ptr()) - .unwrap_or_else(|| std::ptr::null()), - -1i32, - None, - ); + let c_addr = peerstate.addr.as_ref().map(to_cstring).unwrap_or_default(); + + let c_addr_ptr = if peerstate.addr.is_some() { + c_addr.as_ptr() + } else { + std::ptr::null() + }; + + sqlite3_bind_text(stmt, 1i32, c_addr_ptr, -1i32, None); sqlite3_step(stmt); contact_id = sqlite3_column_int(stmt, 0i32) as uint32_t; sqlite3_finalize(stmt); @@ -1100,13 +1098,7 @@ pub unsafe fn dc_handle_degrade_event(context: &Context, peerstate: &Peerstate) &mut contact_chat_id, 0 as *mut libc::c_int, ); - let msg = dc_stock_str_repl_string( - context, - 37i32, - c_addr - .map(|a| a.as_ptr()) - .unwrap_or_else(|| std::ptr::null()), - ); + let msg = dc_stock_str_repl_string(context, 37i32, c_addr_ptr); dc_add_device_msg(context, contact_chat_id, msg); free(msg as *mut libc::c_void); (context.cb)(