qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PULL 04/16] curses: Fixes curses compiling errors.


From: Yonggang Luo
Subject: Re: [PULL 04/16] curses: Fixes curses compiling errors.
Date: Wed, 9 Sep 2020 05:04:19 +0800



On Wed, Sep 9, 2020 at 4:29 AM Peter Maydell <peter.maydell@linaro.org> wrote:
On Tue, 8 Sep 2020 at 19:56, Yonggang Luo <luoyonggang@gmail.com> wrote:
>
> This is the compiling error:
> ../ui/curses.c: In function 'curses_refresh':
> ../ui/curses.c:256:5: error: 'next_maybe_keycode' may be used uninitialized in this function [-Werror=maybe-uninitialized]
>   256 |     curses2foo(_curses2keycode, _curseskey2keycode, chr, maybe_keycode)
>       |     ^~~~~~~~~~
> ../ui/curses.c:302:32: note: 'next_maybe_keycode' was declared here
>   302 |             enum maybe_keycode next_maybe_keycode;
>       |                                ^~~~~~~~~~~~~~~~~~
> ../ui/curses.c:256:5: error: 'maybe_keycode' may be used uninitialized in this function [-Werror=maybe-uninitialized]
>   256 |     curses2foo(_curses2keycode, _curseskey2keycode, chr, maybe_keycode)
>       |     ^~~~~~~~~~
> ../ui/curses.c:265:24: note: 'maybe_keycode' was declared here
>   265 |     enum maybe_keycode maybe_keycode;
>       |                        ^~~~~~~~~~~~~
> cc1.exe: all warnings being treated as errors

> Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
> ---
>  ui/curses.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/ui/curses.c b/ui/curses.c
> index 12bc682cf9..e4f9588c3e 100644
> --- a/ui/curses.c
> +++ b/ui/curses.c
> @@ -262,7 +262,7 @@ static int curses2foo(const int _curses2foo[], const int _curseskey2foo[],
>  static void curses_refresh(DisplayChangeListener *dcl)
>  {
>      int chr, keysym, keycode, keycode_alt;
> -    enum maybe_keycode maybe_keycode;
> +    enum maybe_keycode maybe_keycode = CURSES_KEYCODE;
>
>      curses_winch_check();
>
> @@ -299,7 +299,7 @@ static void curses_refresh(DisplayChangeListener *dcl)
>
>          /* alt or esc key */
>          if (keycode == 1) {
> -            enum maybe_keycode next_maybe_keycode;
> +            enum maybe_keycode next_maybe_keycode = CURSES_KEYCODE;
>              int nextchr = console_getch(&next_maybe_keycode);
>
>              if (nextchr != -1) {

The problem here is that the compiler hasn't noticed that it's
impossible to return something other than -1 from console_getch()
without initializing next_maybe_keycode.

There are two possible reasons for this:
(1) your gcc is a bit old -- newer gcc are better at working
out this kind of thing. But you said on irc that you're using
gcc 10.2.0, which is new...

(2) this is a variant of the problem with the system headers
that causes us to have to redefine assert() in osdep.h, only
with abort() (ie abort() is perhaps not marked as noreturn in
the system headers). If this theory is true, then changing
the abort() in console_getch() to instead be g_assert_not_reached()
would be a different way to avoid the warnings (and if that works
we should probably fix up abort() the way we do assert()).
Tried   g_assert_not_reached still not fixes the issue, and I verified 
on debug build, either g_assert_not_reached or abort, the compiling error doesn't appear,
the debug build are the build that configured with --enable-debug-info --enable-debug

this compiling error only appear in release build.

thanks
-- PMM


--
         此致

罗勇刚
Yours
    sincerely,
Yonggang Luo

reply via email to

[Prev in Thread] Current Thread [Next in Thread]