From: Alexander Kuleshov <kuleshovmail@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel <emacs-devel@gnu.org>
Subject: Re: Adjust gtkutil.c to build with gcc (GCC) 11.2.1 with -Wanalyzer-null-argument
Date: Wed, 1 Sep 2021 23:20:50 +0600 [thread overview]
Message-ID: <CANCZXo760YEp+5LNFVQgAUBs4pj+iutw4otm+iaHrCs0EEOvTQ@mail.gmail.com> (raw)
In-Reply-To: <83czpsquxa.fsf@gnu.org>
[-- Attachment #1: Type: text/plain, Size: 1404 bytes --]
Yes, I'm trying to get a minimal example to reproduce the same error.
By the way it seems that the previous commit in src/gtkutil.c source
code file fixed similar issue
https://github.com/emacs-mirror/emacs/commit/2337869fbf8b967eb53ee57f978f3751987e43dc#diff-f807e90fbf62c1caf61ddc156d5e165035c18820c2320b701be87f96cb242833R3224
Attached file with the full output, just for the case.
On Wed, Sep 1, 2021 at 7:36 PM Eli Zaretskii <eliz@gnu.org> wrote:
>
> > From: Alexander Kuleshov <kuleshovmail@gmail.com>
> > Date: Wed, 1 Sep 2021 18:44:34 +0600
> > Cc: emacs-devel <emacs-devel@gnu.org>
> >
> > On Wed, Sep 1, 2021 at 6:26 PM Eli Zaretskii <eliz@gnu.org> wrote:
> > >
> > > > From: Alexander Kuleshov <kuleshovmail@gmail.com>
> > > > Date: Wed, 1 Sep 2021 16:52:55 +0600
> > > >
> > > > gtkutil.c: In function ‘xg_item_label_same_p’:
> > > > gtkutil.c:2936:54: error: use of NULL where non-null expected
> > > > [CWE-476] [-Werror=analyzer-null-argument]
> > > > 2936 | && ((!old_label && !utf8_label) || strcmp
> > > > (utf8_label, old_label) == 0));
> > >
> > > Isn't this a GCC bug?
> >
> > hmm, yes, possibly. And forget about attachment, I was wrong with
> > `(!old_label == !utf8_label) ||` part.
>
> So maybe report it to their Bugzilla? If it isn't a bug, perhaps they
> will explain to us what is wrong with our code?
>
> Thanks.
[-- Attachment #2: gtkutil.error.txt --]
[-- Type: text/plain, Size: 6396 bytes --]
gtkutil.c: In function ‘xg_item_label_same_p’:
gtkutil.c:2936:37: error: use of NULL ‘utf8_label’ where non-null expected [CWE-476] [-Werror=analyzer-null-argument]
2936 | && (!old_label || strcmp (utf8_label, old_label) == 0));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
‘xg_modify_menubar_widgets’: events 1-4
|
| 3424 | xg_modify_menubar_widgets (GtkWidget *menubar, struct frame *f,
| | ^~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (1) entry to ‘xg_modify_menubar_widgets’
|......
| 3432 | if (! list) return;
| | ~
| | |
| | (2) following ‘false’ branch...
| 3433 |
| 3434 | cl_data = g_object_get_data (G_OBJECT (menubar), XG_FRAME_DATA);
| | ~~~~~~~
| | |
| | (3) ...to here
| 3435 |
| 3436 | xg_update_menubar (menubar, f, &list, list, 0, val->contents,
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (4) calling ‘xg_update_menubar’ from ‘xg_modify_menubar_widgets’
| 3437 | select_cb, deactivate_cb, highlight_cb, cl_data);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
+--> ‘xg_update_menubar’: events 5-12
|
| 2972 | xg_update_menubar (GtkWidget *menubar,
| | ^~~~~~~~~~~~~~~~~
| | |
| | (5) entry to ‘xg_update_menubar’
|......
| 2983 | if (! iter && ! val)
| | ~
| | |
| | (6) following ‘false’ branch...
| 2984 | return;
| 2985 | else if (iter && ! val)
| | ~~ ~
| | | |
| | | (8) following ‘false’ branch...
| | (7) ...to here
|......
| 2998 | else if (! iter && val)
| | ~~ ~
| | | |
| | | (10) following ‘false’ branch...
| | (9) ...to here
|......
| 3009 | else if (xg_item_label_same_p (GTK_MENU_ITEM (iter->data), val->name))
| | ~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | | |
| | | (12) calling ‘xg_item_label_same_p’ from ‘xg_update_menubar’
| | (11) ...to here
|
+--> ‘xg_item_label_same_p’: events 13-14
|
| 2930 | xg_item_label_same_p (GtkMenuItem *witem, const char *label)
| | ^~~~~~~~~~~~~~~~~~~~
| | |
| | (13) entry to ‘xg_item_label_same_p’
| 2931 | {
| 2932 | char *utf8_label = get_utf8_string (label);
| | ~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (14) calling ‘get_utf8_string’ from ‘xg_item_label_same_p’
|
+--> ‘get_utf8_string’: events 15-16
|
| 514 | get_utf8_string (const char *str)
| | ^~~~~~~~~~~~~~~
| | |
| | (15) entry to ‘get_utf8_string’
|......
| 518 | if (!str) return NULL;
| | ~
| | |
| | (16) following ‘true’ branch (when ‘str’ is NULL)...
|
‘get_utf8_string’: event 17
|
|cc1:
| (17): ...to here
|
<------+
|
‘xg_item_label_same_p’: events 18-25
|
| 2932 | char *utf8_label = get_utf8_string (label);
| | ^~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (18) returning to ‘xg_item_label_same_p’ from ‘get_utf8_string’
| 2933 | const char *old_label = witem ? xg_get_menu_item_label (witem) : 0;
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | | |
| | | (19) following ‘true’ branch (when ‘witem’ is non-NULL)...
| | (20) ...to here
| 2934 |
| 2935 | bool is_same = (!old_label == !utf8_label
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~
| 2936 | && (!old_label || strcmp (utf8_label, old_label) == 0));
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | | |
| | | (24) ...to here
| | | (25) argument 1 (‘utf8_label’) NULL where non-null expected
| | (21) following ‘true’ branch...
| | (22) ...to here
| | (23) following ‘false’ branch...
|
In file included from ../lib/string.h:41,
from lisp.h:29,
from gtkutil.c:36:
/usr/include/string.h:140:12: note: argument 1 of ‘strcmp’ must be non-null
140 | extern int strcmp (const char *__s1, const char *__s2)
| ^~~~~~
cc1: all warnings being treated as errors
make[1]: *** [Makefile:386: gtkutil.o] Error 1
make[1]: Leaving directory '/home/alex/disk/dev/emacs/src'
make: *** [Makefile:443: src] Error 2
prev parent reply other threads:[~2021-09-01 17:20 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-01 10:52 Adjust gtkutil.c to build with gcc (GCC) 11.2.1 with -Wanalyzer-null-argument Alexander Kuleshov
2021-09-01 12:26 ` Eli Zaretskii
2021-09-01 12:44 ` Alexander Kuleshov
2021-09-01 13:36 ` Eli Zaretskii
2021-09-01 17:20 ` Alexander Kuleshov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CANCZXo760YEp+5LNFVQgAUBs4pj+iutw4otm+iaHrCs0EEOvTQ@mail.gmail.com \
--to=kuleshovmail@gmail.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).