Again fixed the ptr issue, but more completely now.

Ptrs were broken when using the same p's (one old dangling and one new
valid), but the operator = thought they were the same ptr, so didn't
copy over c.