Hacker News new | ask | show | jobs
by pwdisswordfishy 77 days ago
But if the assertion fails, the program is aborted before the pointer would have been dereferenced, making it not UB. This explanation is bogus.
1 comments

Only if the assert is active. It basically means that the code is invalid when NDEBUG is set.
When NDEBUG is set, there is no test, no assertion, at all. So yes, this code has UB if you set NDEBUG and then pass it a null pointer — but that's obvious. The code does exactly what it looks like it does; there's no tricks or time travel hiding here.