I guess my point is that it's the designer's fault (rather than the user's) for designing something so blatantly error-prone. If that has assumptions the designer made at the time have changed then we should be moving to tools that better cope with the context of today.
There are plenty of new languages. Go is very C-like but scales better and is a lot more idiot proof. These issues with C have been discussed since the 80s and 90s, though, so people should have no excuses.