diff mbox series

[v1,3/5] semihosting: don't send the trailing '\0'

Message ID 20200717105139.25293-4-alex.bennee@linaro.org
State Superseded
Headers show
Series candidate fixes for 5.1-rc1 (shippable, semihosting, OOM tcg) | expand

Commit Message

Alex Bennée July 17, 2020, 10:51 a.m. UTC
From: KONRAD Frederic <frederic.konrad@adacore.com>


Don't send the trailing 0 from the string.

Signed-off-by: KONRAD Frederic <frederic.konrad@adacore.com>

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Message-Id: <1592215252-26742-2-git-send-email-frederic.konrad@adacore.com>
---
 hw/semihosting/console.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

-- 
2.20.1

Comments

Richard Henderson July 17, 2020, 5:47 p.m. UTC | #1
On 7/17/20 3:51 AM, Alex Bennée wrote:
> From: KONRAD Frederic <frederic.konrad@adacore.com>

> 

> Don't send the trailing 0 from the string.

> 

> Signed-off-by: KONRAD Frederic <frederic.konrad@adacore.com>

> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> Message-Id: <1592215252-26742-2-git-send-email-frederic.konrad@adacore.com>

> ---

>  hw/semihosting/console.c | 4 +++-

>  1 file changed, 3 insertions(+), 1 deletion(-)



Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


> diff --git a/hw/semihosting/console.c b/hw/semihosting/console.c

> index 22e7827824a..9b4fee92602 100644

> --- a/hw/semihosting/console.c

> +++ b/hw/semihosting/console.c

> @@ -52,7 +52,9 @@ static GString *copy_user_string(CPUArchState *env, target_ulong addr)

>  

>      do {

>          if (cpu_memory_rw_debug(cpu, addr++, &c, 1, 0) == 0) {

> -            s = g_string_append_c(s, c);

> +            if (c) {

> +                s = g_string_append_c(s, c);

> +            }

>          } else {

>              qemu_log_mask(LOG_GUEST_ERROR,

>                            "%s: passed inaccessible address " TARGET_FMT_lx,

> 


Next cycle, we could clean up this loop a bit, rather than testing c != 0
twice.  E.g.

    while (1) {
        if (cpu_memory_rw_debug(cpu, addr++, &c, 1, 0)) {
            error;
            break;
        }
        if (c == 0) {
            break;
        }
        s = g_string_append_c(s, c);
    }


r~
diff mbox series

Patch

diff --git a/hw/semihosting/console.c b/hw/semihosting/console.c
index 22e7827824a..9b4fee92602 100644
--- a/hw/semihosting/console.c
+++ b/hw/semihosting/console.c
@@ -52,7 +52,9 @@  static GString *copy_user_string(CPUArchState *env, target_ulong addr)
 
     do {
         if (cpu_memory_rw_debug(cpu, addr++, &c, 1, 0) == 0) {
-            s = g_string_append_c(s, c);
+            if (c) {
+                s = g_string_append_c(s, c);
+            }
         } else {
             qemu_log_mask(LOG_GUEST_ERROR,
                           "%s: passed inaccessible address " TARGET_FMT_lx,