Blue Swirl <blauwir...@gmail.com> writes: > On 3/18/10, Markus Armbruster <arm...@redhat.com> wrote: >> Blue Swirl <blauwir...@gmail.com> writes: >> >> > On 3/17/10, Markus Armbruster <arm...@redhat.com> wrote: >> >> Blue Swirl <blauwir...@gmail.com> writes: >> >> >> >> > On 3/17/10, Markus Armbruster <arm...@redhat.com> wrote: >> >> [...] >> >> >> >> +void monitor_set_error(Monitor *mon, QError *qerror) >> >> >> +{ >> >> >> + assert(0); >> >> > >> >> > Please use abort(). >> >> >> >> >> >> Why? >> > >> > Because assert(0) does not abort when compiled with -DNDEBUG. >> >> >> Why is that a problem? And why isn't it a problem for the 300+ other >> assertions in the code? > > We didn't support -DNDEBUG build until recently. Therefore it's safe > to assume that also on production builds assert(0) was equal to > abort(). If the default for production builds changes to -DNDEBUG, we > want to retain the same abort() behaviour. > > The assertions which perform debugging checks aren't a problem. But > assert(0) clearly isn't a debugging check, if you ever reach this line > of code, it's abort() time.
I *know* that this line cannot be reached. That's why I asserted it cannot be reached. If you want "this can't ever happen" assertions to be checked, then you shouldn't define NDEBUG. Do you still want me to use abort() here? By the way, a quick grep shows >50 uses of assert(0).