diff options
author | Michael Vetter <jubalh@iodoru.org> | 2022-08-02 14:20:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-02 14:20:34 +0200 |
commit | 9d094f73e39b18367fab814be26efabe3c468d28 (patch) | |
tree | e2e5d08606d7c7e1d6cbaa6a63efe69b274fa4f7 | |
parent | 0e02cc3cf6fb2ff519b1e0a8bed613d906495af4 (diff) | |
parent | 932e7826aa4ffbfc587c1749c30979ce514477d4 (diff) | |
download | profani-tty-9d094f73e39b18367fab814be26efabe3c468d28.tar.gz |
Merge pull request #1740 from profanity-im/fix/1738-avatar-seg
Check for error before trying to append it
-rw-r--r-- | src/common.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/common.c b/src/common.c index 3a1b9cc4..b2496087 100644 --- a/src/common.c +++ b/src/common.c @@ -445,15 +445,16 @@ get_mentions(gboolean whole_word, gboolean case_sensitive, const char* const mes gboolean call_external(gchar** argv, gchar** std_out, gchar** std_err) { + GError *spawn_error, *status_error; + gboolean spawn_result; + gint exit_status; + GSpawnFlags flags = G_SPAWN_SEARCH_PATH; if (std_out == NULL) flags |= G_SPAWN_STDOUT_TO_DEV_NULL; if (std_err == NULL) flags |= G_SPAWN_STDERR_TO_DEV_NULL; - gint exit_status; - gboolean spawn_result; - GError* spawn_error; spawn_result = g_spawn_sync(NULL, // Inherit the parent PWD. argv, NULL, // Inherit the parent environment. @@ -462,12 +463,19 @@ call_external(gchar** argv, gchar** std_out, gchar** std_err) std_out, std_err, &exit_status, &spawn_error); - if (!spawn_result - || !g_spawn_check_exit_status(exit_status, &spawn_error)) { + if (!spawn_result || !g_spawn_check_exit_status(exit_status, &status_error)) { gchar* cmd = g_strjoinv(" ", argv); - log_error("Spawning '%s' failed with '%s'.", cmd, spawn_error->message); + if (spawn_error && spawn_error->message) { + log_error("Spawning '%s' failed with '%s'.", cmd, spawn_error->message); + g_error_free(spawn_error); + } else if (status_error && status_error->message) { + log_error("Spawning '%s' failed with '%s'.", cmd, status_error->message); + g_error_free(status_error); + spawn_result = FALSE; + } else { + log_error("Spawning '%s' failed with.", cmd); + } g_free(cmd); - g_error_free(spawn_error); } return spawn_result; |