src/libm/s_copysign.c
author Sam Lantinga <slouken@libsdl.org>
Sun, 26 Jan 2020 12:48:35 -0800
changeset 13449 8d2d9a00fc02
parent 11683 48bcba563d9c
permissions -rw-r--r--
Fixed bug 4898 - No rumble because of integer overflow in SDL_JoystickRumble

meyraud705

Switch hidapi and xinput also need to check for overflow, attached a patch for them.
     1 /*
     2  * ====================================================
     3  * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
     4  *
     5  * Developed at SunPro, a Sun Microsystems, Inc. business.
     6  * Permission to use, copy, modify, and distribute this
     7  * software is freely granted, provided that this notice
     8  * is preserved.
     9  * ====================================================
    10  */
    11 
    12 /*
    13  * copysign(double x, double y)
    14  * copysign(x,y) returns a value with the magnitude of x and
    15  * with the sign bit of y.
    16  */
    17 
    18 #include "math_libm.h"
    19 #include "math_private.h"
    20 
    21 double copysign(double x, double y)
    22 {
    23 	u_int32_t hx,hy;
    24 	GET_HIGH_WORD(hx,x);
    25 	GET_HIGH_WORD(hy,y);
    26 	SET_HIGH_WORD(x,(hx&0x7fffffff)|(hy&0x80000000));
    27         return x;
    28 }
    29 libm_hidden_def(copysign)