bdrv_iterate_format() did not actually sort the formats by name but by
"pointer interpreted as string". That is probably not what we intended
to do, so fix it (by changing qsort_strcmp() so it matches the example
from qsort()'s manual page).

Signed-off-by: Max Reitz <>
 block.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/block.c b/block.c
index bb1f1ec..e46e4b2 100644
--- a/block.c
+++ b/block.c
@@ -2789,7 +2789,7 @@ const char *bdrv_get_format_name(BlockDriverState *bs)
 static int qsort_strcmp(const void *a, const void *b)
-    return strcmp(a, b);
+    return strcmp(*(char *const *)a, *(char *const *)b);
 void bdrv_iterate_format(void (*it)(void *opaque, const char *name),

Reply via email to