Curl now uses the idiom where the linked list data (prev/next pointers) are inlined in the same struct that also holds the payload
And when you have a memory overwrite then your meta data is corrupted and you loose the complete list.
I keep my meta data and payload in two separate list for that very reason.
So you structure your code to get more subtle errors in case of memory overwrites? "Loosing the complete list" sounds catastrophic and like something that would be easily noticed , and thus fixed.
Arranging the code to "keep trucking" in case of spurious memory overwrites seems like setting it up to be hard to debug, and having programs run in some ill-defined state where some portion of data has been overwritten but nobody notices is just super-scary.
And when you have a memory overwrite then your meta data is corrupted and you loose the complete list. I keep my meta data and payload in two separate list for that very reason.