avoid breaking strict aliasing rule

use original code to avoid breaking strict aliasing rule