Skip to content
Permalink
Browse files

Fixed bug 2274 - SDL_ceil is incorrectly implemented when HAVE_LIBC i…

…s 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.
  • Loading branch information
slouken committed Nov 27, 2013
1 parent c343eab commit 8574c0815cfab3952c8cf4c97a5c4467a1a18f55
Showing with 6 additions and 1 deletion.
  1. +6 −1 src/stdlib/SDL_stdlib.c
@@ -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 */
}

0 comments on commit 8574c08

Please sign in to comment.