Jeff King <peff@xxxxxxxx> writes: > But of all the options outlined, I think I'd much rather just see an > assert() for something that should never happen, rather than mixing it > into the logic. Surely. > In that vein, one thing that puzzles me is that the current code looks > like: > > if (options->msg_severity && msg_id >= 0 && msg_id < FSCK_MSG_MAX) > severity = options->msg_severity[msg_id]; > else { > severity = msg_id_info[msg_id].severity; > ... > } > > So if the severity override list given by "options" exists, _and_ if we > are in the enum range, then we use that. Otherwise, we dereference the > global list. But wouldn't an out-of-range condition have the exact same > problem dereferencing that global list? > > IOW, should this really be: > > if (msg_id < 0 || msg_id >= FSCK_MSG_MAX) > die("BUG: broken enum"); > > if (options->msg_severity) > severity = options->msg_severity[msg_id]; > else > severity = msg_id_info[msg_id].severity; > > ? And then you can spell that first part as assert(), which I suspect > (but did not test) may shut up clang's warnings. Sounds like a sensible fix to me. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html