init: pointer argument not modified on failure + fix one non-destroy case