mirror of https://github.com/encounter/SDL.git
Fixed bug 2274 - SDL_ceil is incorrectly implemented when HAVE_LIBC is not defined
Ghassan Al-Mashareqa The SDL_ceil function is implemented incorrectly when HAVE_CEIL is not defined (HAVE_LIBC not defined). The following code: double val = SDL_ceil(2.3); printf("%g", val); prints "2.0", as STD_ceil is defined as: double SDL_ceil(double x) { #ifdef HAVE_CEIL return ceil(x); #else return (double)(int)((x)+0.5); #endif /* HAVE_CEIL */ } This functions is used in the SDL_BuildAudioResampleCVT function of the audio subsystem (SDL_audiocvt.c), and causes a bug in that function.
This commit is contained in:
parent
c343eab67a
commit
8574c0815c
|
@ -52,7 +52,12 @@ SDL_ceil(double x)
|
||||||
#ifdef HAVE_CEIL
|
#ifdef HAVE_CEIL
|
||||||
return ceil(x);
|
return ceil(x);
|
||||||
#else
|
#else
|
||||||
return (double)(int)((x)+0.5);
|
double integer = SDL_floor(x);
|
||||||
|
double fraction = x - integer;
|
||||||
|
if (fraction > 0.0) {
|
||||||
|
integer += 1.0;
|
||||||
|
}
|
||||||
|
return integer;
|
||||||
#endif /* HAVE_CEIL */
|
#endif /* HAVE_CEIL */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue