1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-01 11:32:48 -05:00

Replace assert(false) with an unreachable() macro.

Taking a leaf out of the LLVM code base: this macro still includes an
assert(false) so that the message will show up in a typical build, but
it follows it up with a call to a function explicitly marked as no-
return.

So this ought to do a better job of convincing compilers that once a
code path hits this function it _really doesn't_ have to still faff
about with making up a bogus return value or filling in a variable
that 'might be used uninitialised' in the following code that won't be
reached anyway.

I've gone through the existing code looking for the assert(false) /
assert(0) idiom and replaced all the ones I found with the new macro,
which also meant I could remove a few pointless return statements and
variable initialisations that I'd already had to put in to placate
compiler front ends.
This commit is contained in:
Simon Tatham
2019-01-03 08:12:19 +00:00
parent 61dec9a07a
commit 0112936ef7
27 changed files with 89 additions and 75 deletions

View File

@ -679,7 +679,7 @@ static void update_mouseptr(GtkFrontend *inst)
inst->waitcursor);
break;
default:
assert(0);
unreachable("Bad busy_status");
}
}

View File

@ -454,7 +454,7 @@ void sk_addrcopy(SockAddr *addr, char *buf)
memcpy(buf, &((struct sockaddr_in6 *)step.ai->ai_addr)->sin6_addr,
sizeof(struct in6_addr));
else
assert(false);
unreachable("bad address family in sk_addrcopy");
#else
struct in_addr a;
@ -723,7 +723,7 @@ static int try_connect(NetSocket *sock)
break;
default:
assert(0 && "unknown address family");
unreachable("unknown address family");
exit(1); /* XXX: GCC doesn't understand assert() on some systems. */
}

View File

@ -201,7 +201,7 @@ void pageant_print_env(int pid)
socketname, pid);
break;
case SHELL_AUTO:
assert(0 && "Can't get here");
unreachable("SHELL_AUTO should have been eliminated by now");
break;
}
}
@ -708,7 +708,7 @@ void run_client(void)
}
break;
default:
assert(0 && "Invalid client action found");
unreachable("Invalid client action found");
}
}