From 5ed76a4c63db9295c6c5d67895925810050d4a46 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Mon, 4 Feb 2019 16:40:18 +0100 Subject: [PATCH] queue: fix QTAILQ_FOREACH_REVERSE_SAFE The iteration was stopping as soon as prev_var was set to NULL, and therefore it skipped the first element. Fortunately, or unfortunately, we have only one use of QTAILQ_FOREACH_REVERSE_SAFE. Thus this only showed up as incorrect register preferences on the very first translation block that was compiled. Reported-by: Thomas Huth Reviewed-by: Emilio G. Cota Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- include/qemu/queue.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/qemu/queue.h b/include/qemu/queue.h index 1f8e219412..0379bd8fdb 100644 --- a/include/qemu/queue.h +++ b/include/qemu/queue.h @@ -439,7 +439,7 @@ union { \ #define QTAILQ_FOREACH_REVERSE_SAFE(var, head, field, prev_var) \ for ((var) = QTAILQ_LAST(head); \ - (var) && ((prev_var) = QTAILQ_PREV(var, field)); \ + (var) && ((prev_var) = QTAILQ_PREV(var, field), 1); \ (var) = (prev_var)) /*