All the public PL_HashTable* functions that take a PLHashTable* argument crash if the value of that argument is NULL. See bug 517615 for example. It would be a tad nicer if they didn't.
This is a design decision. Crashing forces the programming error to surface and provides a good starting point for debugging. Not crashing is more considerate to the users. There are good arguments for either way. The current API reflects the design decision the author made.
Thanks, Wah-Teh. Now we have that decision on record.
It should probably be documented in the header file.