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.main
parent
c343eab67a
commit
8574c0815c
|
@ -52,7 +52,12 @@ SDL_ceil(double x)
|
|||
#ifdef HAVE_CEIL
|
||||
return ceil(x);
|
||||
#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 */
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue