I haven't checked that but I believe you. My only nitpick is that I wouldn't put the whole blame for that on C, as there are proper ways to produce "safer"[1] code. What other languages did was lower the entry barrier to write better code, but that doesn't mean one language is inherently better that another.
1: No code is ever safe, not even formally verified code.
“Memory safety” (or lack thereof) is probably less ambiguous: usually “memory model” is the interaction between program and memory, specifically as it pertains to concurrency. And in the latter understanding I believe C has about the same model as C++, which is also the one adopted by Rust. And while it’s fiddly, it’s not a complete disaster.
On my last workplace we argued if we dared to use stdint.h, since it was so new and fancy. I was a proponent, but there is something calm over discussing whether to use 23 year old additions or not.
And you will be forever left writing insecure memory unsafe code.
So we have C89, C99, C11, and C2X (C23?) as the only revisions introducing new stuff...
You could write and rewrite everything multiple times in a high level language with that much work.
C libraries break all the time. They change them whenever they want. The standard lib and language might be stable but the large frameworks aren't.
It doesn't seem at all suitable for large application programs.
I do sometimes worry that one day my Python code won't run and 5 year projects will become useless. But so far, popular language aren't showing any sign of going away.