What if `subobjs==0`?  Shouldn't it be a memset to clear all of them?