Good stuff. Could use some asserts and checks for NULL here and there, but overall it's a nicely organized C code (and with proper bracing and indentation style :)). Always a pleasure to read through something like this.
That’s certainly a strange choice, but you do you I guess…
edit: root comment here is mentioning NULL checks and actually being helpful