Philippe Mathieu-Daudé <philippe.mathieu.da...@gmail.com> writes: > On 15/3/22 14:59, Markus Armbruster wrote: >> Alex Bennée <alex.ben...@linaro.org> writes: >> >>> Markus Armbruster <arm...@redhat.com> writes: >>> >>>> g_new(T, n) is neater than g_malloc(sizeof(T) * n). It's also safer, >>>> for two reasons. One, it catches multiplication overflowing size_t. >>>> Two, it returns T * rather than void *, which lets the compiler catch >>>> more type errors. >>>> >>> <snip> >>>> diff --git a/semihosting/config.c b/semihosting/config.c >>>> index 137171b717..6d48ec9566 100644 >>>> --- a/semihosting/config.c >>>> +++ b/semihosting/config.c >>>> @@ -98,7 +98,7 @@ static int add_semihosting_arg(void *opaque, >>>> if (strcmp(name, "arg") == 0) { >>>> s->argc++; >>>> /* one extra element as g_strjoinv() expects NULL-terminated >>>> array */ >>>> - s->argv = g_realloc(s->argv, (s->argc + 1) * sizeof(void *)); >>>> + s->argv = g_renew(void *, s->argv, s->argc + 1); >>> >>> This did indeed break CI because s->argv is an array of *char: >>> >>> ../semihosting/config.c:101:17: error: assignment to ‘const char **’ from >>> incompatible pointer type ‘void **’ [-Werror=incompatible-pointer-types] >>> 101 | s->argv = g_renew(void *, s->argv, s->argc + 1); >>> | ^ >>> cc1: all warnings being treated as errors >>> >>> So it did the job of type checking but failed to build ;-) >> >> You found a hole in my compile testing, thanks! >> >> I got confused about the configuration of my build trees. Catching such >> mistakes is what CI is for :) > > FYI Alex fixed this here: > https://lore.kernel.org/qemu-devel/20220315121251.2280317-8-alex.ben...@linaro.org/ > > So your series could go on top (modulo the Coverity change).
I dropped this hunk in v2. Whether my v2 or Alex's series goes in first doesn't matter.