From b2eea969dbf9f1c7556ccfb5ccc60dd0724199a3 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Fri, 10 Apr 2020 14:59:27 +0200 Subject: Fix error in getting previous chatlog Our search was too broad, and thus incorrect. One of the various mistakes it can cause was https://github.com/profanity-im/profanity/issues/1308 Fix https://github.com/profanity-im/profanity/issues/1308 --- src/database.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/database.c b/src/database.c index c02392be..ddff84cc 100644 --- a/src/database.c +++ b/src/database.c @@ -215,12 +215,16 @@ log_database_get_previous_chat(const gchar *const contact_barejid) { sqlite3_stmt *stmt = NULL; char *query; + const char *jid = connection_get_fulljid(); + Jid *myjid = jid_create(jid); - if (asprintf(&query, "SELECT * FROM (SELECT `message`, `timestamp`, `from_jid`, `type` from `ChatLogs` WHERE `from_jid` = '%s' OR `to_jid` = '%s' ORDER BY `timestamp` DESC LIMIT 10) ORDER BY `timestamp` ASC;", contact_barejid, contact_barejid) == -1) { + if (asprintf(&query, "SELECT * FROM (SELECT `message`, `timestamp`, `from_jid`, `type` from `ChatLogs` WHERE (`from_jid` = '%s' AND `to_jid` = '%s') OR (`from_jid` = '%s' AND `to_jid` = '%s') ORDER BY `timestamp` DESC LIMIT 10) ORDER BY `timestamp` ASC;", contact_barejid, myjid->barejid, myjid->barejid, contact_barejid) == -1) { log_error("log_database_get_previous_chat(): SQL query. could not allocate memory"); return NULL; } + jid_destroy(myjid); + int rc = sqlite3_prepare_v2(g_chatlog_database, query, -1, &stmt, NULL); if( rc!=SQLITE_OK ) { log_error("log_database_get_previous_chat(): unknown SQLite error"); -- cgit 1.4.1-2-gfad0