When s_label determine if a jump to the error label (e.g. WT_ERR) occurs before a regular return (e.g. WT_RET), it should match other macros, like WT_RET_ERROR_OK().
Also, within a loop, any mixing of WT_RET (and friends) and WT_ERR (and friends) is incorrect:
WT_RET(f());
while (cond) {
WT_RET(g());
WT_ERR(h());
}
This example is currently allowed, but can be detected.
I've marked this as a bug as it will require some code fixes.