Per the comment, the release() call is currently occuring in the CCTexture2D::initWithImage call. If you choose to release here, you'll want to remove the release() calls inside CCTexture2D::initWithImage or you'll be potentially accessing freed memory.

Not sure what implications that would have for other consumers of initWithImage, so I chose the safer option.