Loading DD on some versions of Perl seems to change the result of !0, which means we fail tests. This is probably a perl bug. Anyway, this changes the tests to make sure we load DD after we load the test set, so we get the right data structures in memory.
this macro is intimate to one routine only and exists only for refactoring, so move it local to where it is used, and undef it after the last use so it is clear it is not for general use (and next to where it is used).
We end up dieing because the SV we are dumping is a magic SV, which we have called mg_get() on, which has been legitimately set to undef. I am not sure if there is a better way to detect whether PVMGs have been handled ok. We could maybe rework this logic further, but it seems ok now.
This is still broken. Specifically "breaks" support for tied hashes (and possibly arrays and scalars). Not clear that supporting them was strictly correct before.
Basically, if we find unknown data structures (references, really), we have several options: die (default), emit undef, or stringify the data structure. If either of the latter two, we optionally emit a warning, too. Not being too strict with your input data makes a lot of sense if you're working on the system that is used to track problems. You never want that flat-out dying rather than just making do.