fix bad alloc bugs