diff options
author | Alex Bennée <alex.bennee@linaro.org> | 2025-02-07 15:30:59 +0000 |
---|---|---|
committer | Alex Bennée <alex.bennee@linaro.org> | 2025-02-10 13:47:58 +0000 |
commit | 1e00ebfd8012061c1186fbf368b4216ac6e299c4 (patch) | |
tree | 1f26b5e17d619fed622dab737cea15fcc47e76de | |
parent | ff6c3b1a16ac2ee570447660526eea531d748396 (diff) | |
download | qemu-1e00ebfd8012061c1186fbf368b4216ac6e299c4.zip qemu-1e00ebfd8012061c1186fbf368b4216ac6e299c4.tar.gz qemu-1e00ebfd8012061c1186fbf368b4216ac6e299c4.tar.bz2 |
tests/qtest: simplify qtest_process_inbuf
Don't both creating a GString to temporarily hold our qtest command.
Instead do a simpler g_strndup and use autofree to clean up
afterwards.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20250207153112.3939799-5-alex.bennee@linaro.org>
-rw-r--r-- | system/qtest.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/system/qtest.c b/system/qtest.c index e68ed0f..bb1efba 100644 --- a/system/qtest.c +++ b/system/qtest.c @@ -763,25 +763,21 @@ static void qtest_process_command(CharBackend *chr, gchar **words) } } +/* + * Process as much of @inbuf as we can in newline terminated chunks. + * Remove the processed commands from @inbuf as we go. + */ static void qtest_process_inbuf(CharBackend *chr, GString *inbuf) { char *end; while ((end = strchr(inbuf->str, '\n')) != NULL) { - size_t offset; - GString *cmd; - gchar **words; - - offset = end - inbuf->str; + size_t len = end - inbuf->str; + g_autofree char *cmd = g_strndup(inbuf->str, len); + g_auto(GStrv) words = g_strsplit(cmd, " ", 0); - cmd = g_string_new_len(inbuf->str, offset); - g_string_erase(inbuf, 0, offset + 1); - - words = g_strsplit(cmd->str, " ", 0); + g_string_erase(inbuf, 0, len + 1); qtest_process_command(chr, words); - g_strfreev(words); - - g_string_free(cmd, TRUE); } } |