On Fri, 16 May 2025 17:25:21 +1000
David Gibson
On Thu, May 15, 2025 at 06:05:01PM +0200, Stefano Brivio wrote:
Cppcheck 2.14.2 on Alpine Linux (musl) says that:
tap.c:111:19: error: Found an exit path from function with non-void return type that has missing return statement [missingReturn] switch (c->mode) { ^
This exit path is not reachable because we ASSERT(0) after the switch, but for some reason cppcheck doesn't see this with musl headers. Hide the warning with a redundant return statement.
Signed-off-by: Stefano Brivio
Hm. Alternatively you could change this to call abort_with_msg() directly. That's marked as ((noreturn)) so with any luck cppcheck will then be able to figure out what's going on. Although, I'm slightly surprised it can't do so already: I thought I put the ((noreturn)) in there to avoid warnings exactly like this.
So, I checked, and abort_with_msg(""); works. ASSERT() ultimately expands to abort_with_msg(), but for some reason cppcheck together with Clang can't "follow" that, I suppose it's something related to the pre-processor. But in any case, abort_with_msg("") doesn't look as descriptive and as obviously redundant as a return statement with a comment, so I don't quite see the benefit changing it (also considering that I need to test other versions, which takes time). -- Stefano