From bb4f63c29bd0682115e5708332289423685b30a8 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 5 Dec 2021 21:16:29 -0800 Subject: [PATCH] driver: New function output_log_nocopy(). --- src/language/expressions/evaluate.c | 3 +-- src/language/utilities/host.c | 3 +-- src/output/driver.c | 6 ++++++ src/output/driver.h | 1 + 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/language/expressions/evaluate.c b/src/language/expressions/evaluate.c index 7543aed55e..d6d5738481 100644 --- a/src/language/expressions/evaluate.c +++ b/src/language/expressions/evaluate.c @@ -298,6 +298,5 @@ expr_debug_print_postfix (const struct expression *e) NOT_REACHED (); } } - output_log ("%s", ds_cstr (&s)); - ds_destroy (&s); + output_log_nocopy (ds_steal_cstr (&s)); } diff --git a/src/language/utilities/host.c b/src/language/utilities/host.c index 477f9796a0..d730e02634 100644 --- a/src/language/utilities/host.c +++ b/src/language/utilities/host.c @@ -261,8 +261,7 @@ run_command (const char *command, struct timespec timeout) if (end > output && end[-1] == '\n') end[-1] = '\0'; - output_log ("%s", output); - free (output); + output_log_nocopy (output); } free (locale_output); diff --git a/src/output/driver.c b/src/output/driver.c index 063ae9366b..f627e31248 100644 --- a/src/output/driver.c +++ b/src/output/driver.c @@ -366,6 +366,12 @@ output_log (const char *format, ...) char *s = xvasprintf (format, args); va_end (args); + output_log_nocopy (s); +} + +void +output_log_nocopy (char *s) +{ output_submit (text_item_create_nocopy (TEXT_ITEM_LOG, s, NULL)); } diff --git a/src/output/driver.h b/src/output/driver.h index 3e5cf193a4..c16774dd99 100644 --- a/src/output/driver.h +++ b/src/output/driver.h @@ -35,6 +35,7 @@ void output_submit (struct output_item *); void output_flush (void); void output_log (const char *, ...) PRINTF_FORMAT (1, 2); +void output_log_nocopy (char *); const char *output_get_title (void); void output_set_title (const char *); -- 2.30.2