From: sagawa.aki@gmail.com (Akihiro Sagawa)
To: cocci@systeme.lip6.fr
Subject: [Cocci] [bug-cocci] deadcode detection
Date: Sat, 13 May 2017 21:40:03 +0900 [thread overview]
Message-ID: <20170513213826.751B.375B48EC@gmail.com> (raw)
Hello, julia and folks,
I found the following source code (deadcode.c) isn't updated by semantic
patch (deadcode.cooci) with spatch version 1.0.4.
[deadcode.c]
int deadcode(const char* c)
{
do {
if (c) {
foo(*c);
break;
}
break;
} while (0);
}
[deadcode.cocci]
@@
expression E;
@@
-foo(E)
+bar(E)
With `--debug` option, spatch shows `FLOW: deadcode detected: File
"./deadcode.c", line 3`. But, I think there is no deadcode. There is
just a redundant `break` at the end of the loop. In my opinion, although
it's a bit strange, `break` keyword is harmless like the last `break`
keyword in the last label block in a `switch` statement, e.g.
switch (*c) {
case 'x': x++; break;
case 'y': y++; break;
default:
warn("Invalid input: %c\n", *c);
break; // <-- this is harmless, not a deadcode
}
Practical issue is seen in Wine 2.7's dlls/shlwapi/url.c from line 707
to 874. I tried to replace isalnum() to isalnumW(), a WCHAR version of
isalnum(),@line 812. However, spatch missed it without warnings. You
can see https://source.winehq.org/source/dlls/shlwapi/url.c?v=wine-2.7#0707
for the source code.
I'll be happy if spatch finds out the above case and makes a patch for it.
Deadcode.{c,cocci} are available in the Github pull requests.
Thanks in advance,
Akihiro Sagawa
next reply other threads:[~2017-05-13 12:40 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-13 12:40 Akihiro Sagawa [this message]
2017-05-13 18:46 ` [Cocci] [bug-cocci] deadcode detection Michael Stefaniuc
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170513213826.751B.375B48EC@gmail.com \
--to=sagawa.aki@gmail.com \
--cc=cocci@systeme.lip6.fr \
/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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.