Curl now uses the idiom where the linked list data (prev/next pointers) are inlined in the same struct that also holds the payload.
I wonder why this wasn't the original design; I've seen the "two-allocate" method a few times in other code and it's always seemed rather silly to allocate that separate little structure just to point to the things you're linking together anyway, so I'm curious how that way of doing it became somewhat commonplace.