On Fri, Jan 07, 2022 at 02:38:44PM +0100, Thomas Huth wrote: > If I configure my build with --enable-sanitizers, my GCC (v8.5.0) > complains: > > .../softmmu/device_tree.c: In function ‘qemu_fdt_add_path’: > .../softmmu/device_tree.c:560:18: error: ‘retval’ may be used uninitialized > in this function [-Werror=maybe-uninitialized] > int namelen, retval; > ^~~~~~ > > It's a false warning since the while loop is always executed at least > once (p has to be non-NULL, otherwise the derefence in the if-statement > earlier will crash). Thus let's switch to a do-while loop here instead > to make the compiler happy in all cases. > > Signed-off-by: Thomas Huth <th...@redhat.com> > --- > softmmu/device_tree.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/softmmu/device_tree.c b/softmmu/device_tree.c > index 3965c834ca..9e96f5ecd5 100644 > --- a/softmmu/device_tree.c > +++ b/softmmu/device_tree.c > @@ -564,7 +564,7 @@ int qemu_fdt_add_path(void *fdt, const char *path) > return -1; > } > > - while (p) { > + do { > name = p + 1; > p = strchr(name, '/'); > namelen = p != NULL ? p - name : strlen(name); > @@ -584,7 +584,7 @@ int qemu_fdt_add_path(void *fdt, const char *path) > } > > parent = retval; > - } > + } while (p); > > return retval; > } > -- > 2.27.0 >
Reviewed-by: Andrew Jones <drjo...@redhat.com>