don't rely on malloc to handle (0) parameter; abort before.