$crazy_null assignment in DB_DataObject has a typo that makes it crazier
strtolower($options['disable_null_strings'] === 'full')
It should be
strtolower($options['disable_null_strings']) === 'full'
Is DB_DataObject still being updated upstream? I can't find a recent repo. Although I don't think this bug ever comes up in practice how it's used in civi.