From 801b520579af137c076d874ac0820a30102ea57f Mon Sep 17 00:00:00 2001 From: nekobit Date: Sat, 21 May 2022 20:23:26 +0000 Subject: [PATCH] Cleanup search results FossilOrigin-Name: 034803e4aaf28b874c4aa534a9c4c0588ace59680262b95e538d9fb9b502d1f7 --- src/search.c | 9 ++++++--- src/status.c | 13 ++++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/search.c b/src/search.c index e420024..076c561 100644 --- a/src/search.c +++ b/src/search.c @@ -99,6 +99,8 @@ void content_search_statuses(struct session* ssn, mastodont_t* api, char** data) search_page(ssn, api, SEARCH_STATUSES, STR_NULL_EMPTY(statuses_html)); if (statuses_html) free(statuses_html); + mstdnt_cleanup_search_results(&results); + mastodont_storage_cleanup(&storage); } void content_search_accounts(struct session* ssn, mastodont_t* api, char** data) @@ -135,6 +137,8 @@ void content_search_accounts(struct session* ssn, mastodont_t* api, char** data) search_page(ssn, api, SEARCH_ACCOUNTS, STR_NULL_EMPTY(accounts_html)); if (accounts_html) free(accounts_html); + mstdnt_cleanup_search_results(&results); + mastodont_storage_cleanup(&storage); } void content_search_hashtags(struct session* ssn, mastodont_t* api, char** data) @@ -185,9 +189,8 @@ void content_search_hashtags(struct session* ssn, mastodont_t* api, char** data) search_page(ssn, api, SEARCH_HASHTAGS, tags_page); if (tags_html) free(tags_html); - mastodont_storage_cleanup(&storage); if (tags_graph) free(tags_graph); free(tags_page); - - // TODO Cleanup shit + mstdnt_cleanup_search_results(&results); + mastodont_storage_cleanup(&storage); } diff --git a/src/status.c b/src/status.c index e38fee6..9ddd0e8 100644 --- a/src/status.c +++ b/src/status.c @@ -379,6 +379,7 @@ char* reformat_status(struct session* ssn, struct mstdnt_emoji* emos, size_t emos_len) { + if (!content) return NULL; char* gt_res = NULL; char* emo_res; if (ssn->config.stat_greentexts) @@ -527,14 +528,15 @@ char* construct_status(struct session* ssn, interaction_btns = construct_interaction_buttons(ssn, status, NULL, flags); // Find and replace - if (args && args->highlight_word) + if (args && args->highlight_word && parse_content != status->content) { char* parse_content_tmp; char* repl_str; easprintf(&repl_str, "%s", args->highlight_word); parse_content_tmp = parse_content; parse_content = strrepl(parse_content, args->highlight_word, repl_str, STRREPL_ALL); - if (parse_content != parse_content_tmp) + // Check if the old parse_content needed to be free'd + if (parse_content_tmp != status->content) free(parse_content_tmp); else // No results, move back parse_content = parse_content_tmp; @@ -590,15 +592,16 @@ char* construct_status(struct session* ssn, if (size) *size = s; // Cleanup - if (formatted_display_name != status->account.display_name) free(formatted_display_name); + if (formatted_display_name != status->account.display_name && + formatted_display_name) free(formatted_display_name); if (interaction_btns) free(interaction_btns); if (in_reply_to_str) free(in_reply_to_str); if (attachments) free(attachments); if (emoji_reactions) free(emoji_reactions); if (notif) free(notif_info); if (interactions_html) free(interactions_html); - //if (formatted_display_name != status->account.display_name) free(formatted_display_name); - if (parse_content != status->content) free(parse_content); + if (parse_content != status->content && + parse_content) free(parse_content); return stat_html; }