From: Ben Pfaff Date: Mon, 6 Dec 2021 05:16:29 +0000 (-0800) Subject: driver: New function output_log_nocopy(). X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp;a=commitdiff_plain;h=bb4f63c29bd0682115e5708332289423685b30a8 driver: New function output_log_nocopy(). --- 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 *);