fixed warning: type-punned pointer may alias