fix g++ dereferencing type-punned pointer will break strict-aliasing rules warning