Renamed SDL_size_add_overflow() and SDL_size_mul_overflow()
This commit is contained in:
@@ -175,7 +175,7 @@ static SDL_AssertState SDLCALL SDL_PromptAssertion(const SDL_AssertData *data, v
|
||||
|
||||
// .. and if it didn't, try to allocate as much room as we actually need.
|
||||
if (len >= (int)buf_len) {
|
||||
if (SDL_size_add_overflow(len, 1, &buf_len) == 0) {
|
||||
if (SDL_size_add_check_overflow(len, 1, &buf_len)) {
|
||||
message = (char *)SDL_malloc(buf_len);
|
||||
if (message) {
|
||||
len = SDL_RenderAssertMessage(message, buf_len, data);
|
||||
|
||||
@@ -480,7 +480,7 @@ void SDL_LogMessageV(int category, SDL_LogPriority priority, SDL_PRINTF_FORMAT_S
|
||||
}
|
||||
|
||||
// If message truncated, allocate and re-render
|
||||
if (len >= sizeof(stack_buf) && SDL_size_add_overflow(len, 1, &len_plus_term) == 0) {
|
||||
if (len >= sizeof(stack_buf) && SDL_size_add_check_overflow(len, 1, &len_plus_term)) {
|
||||
// Allocate exactly what we need, including the zero-terminator
|
||||
message = (char *)SDL_malloc(len_plus_term);
|
||||
if (!message) {
|
||||
|
||||
@@ -539,9 +539,9 @@ void *SDL_aligned_alloc(size_t alignment, size_t size)
|
||||
}
|
||||
padding = (alignment - (size % alignment));
|
||||
|
||||
if (SDL_size_add_overflow(size, alignment, &size) == 0 &&
|
||||
SDL_size_add_overflow(size, sizeof(void *), &size) == 0 &&
|
||||
SDL_size_add_overflow(size, padding, &size) == 0) {
|
||||
if (SDL_size_add_check_overflow(size, alignment, &size) &&
|
||||
SDL_size_add_check_overflow(size, sizeof(void *), &size) &&
|
||||
SDL_size_add_check_overflow(size, padding, &size)) {
|
||||
void *original = SDL_malloc(size);
|
||||
if (original) {
|
||||
// Make sure we have enough space to store the original pointer
|
||||
|
||||
@@ -1456,7 +1456,7 @@ static bool UnRLEAlpha(SDL_Surface *surface)
|
||||
uncopy_opaque = uncopy_transl = uncopy_32;
|
||||
}
|
||||
|
||||
if (SDL_size_mul_overflow(surface->h, surface->pitch, &size)) {
|
||||
if (!SDL_size_mul_check_overflow(surface->h, surface->pitch, &size)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1527,7 +1527,7 @@ void SDL_UnRLESurface(SDL_Surface *surface, bool recode)
|
||||
size_t size;
|
||||
|
||||
// re-create the original surface
|
||||
if (SDL_size_mul_overflow(surface->h, surface->pitch, &size)) {
|
||||
if (!SDL_size_mul_check_overflow(surface->h, surface->pitch, &size)) {
|
||||
// Memory corruption?
|
||||
surface->internal->flags |= SDL_INTERNAL_SURFACE_RLEACCEL;
|
||||
return;
|
||||
|
||||
@@ -61,27 +61,27 @@ void SDL_UpdateSurfaceLockFlag(SDL_Surface *surface)
|
||||
static bool SDL_CalculateRGBSize(Uint32 format, size_t width, size_t height, size_t *size, size_t *pitch, bool minimal)
|
||||
{
|
||||
if (SDL_BITSPERPIXEL(format) >= 8) {
|
||||
if (SDL_size_mul_overflow(width, SDL_BYTESPERPIXEL(format), pitch)) {
|
||||
if (!SDL_size_mul_check_overflow(width, SDL_BYTESPERPIXEL(format), pitch)) {
|
||||
return SDL_SetError("width * bpp would overflow");
|
||||
}
|
||||
} else {
|
||||
if (SDL_size_mul_overflow(width, SDL_BITSPERPIXEL(format), pitch)) {
|
||||
if (!SDL_size_mul_check_overflow(width, SDL_BITSPERPIXEL(format), pitch)) {
|
||||
return SDL_SetError("width * bpp would overflow");
|
||||
}
|
||||
if (SDL_size_add_overflow(*pitch, 7, pitch)) {
|
||||
if (!SDL_size_add_check_overflow(*pitch, 7, pitch)) {
|
||||
return SDL_SetError("aligning pitch would overflow");
|
||||
}
|
||||
*pitch /= 8;
|
||||
}
|
||||
if (!minimal) {
|
||||
// 4-byte aligning for speed
|
||||
if (SDL_size_add_overflow(*pitch, 3, pitch)) {
|
||||
if (!SDL_size_add_check_overflow(*pitch, 3, pitch)) {
|
||||
return SDL_SetError("aligning pitch would overflow");
|
||||
}
|
||||
*pitch &= ~3;
|
||||
}
|
||||
|
||||
if (SDL_size_mul_overflow(height, *pitch, size)) {
|
||||
if (!SDL_size_mul_check_overflow(height, *pitch, size)) {
|
||||
return SDL_SetError("height * pitch would overflow");
|
||||
}
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ bool SDL_CalculateYUVSize(SDL_PixelFormat format, int w, int h, size_t *size, si
|
||||
{
|
||||
/* sz_plane == w * h; */
|
||||
size_t s1;
|
||||
if (SDL_size_mul_overflow(w, h, &s1) < 0) {
|
||||
if (!SDL_size_mul_check_overflow(w, h, &s1)) {
|
||||
return SDL_SetError("width * height would overflow");
|
||||
}
|
||||
sz_plane = (int) s1;
|
||||
@@ -52,15 +52,15 @@ bool SDL_CalculateYUVSize(SDL_PixelFormat format, int w, int h, size_t *size, si
|
||||
{
|
||||
/* sz_plane_chroma == ((w + 1) / 2) * ((h + 1) / 2); */
|
||||
size_t s1, s2, s3;
|
||||
if (SDL_size_add_overflow(w, 1, &s1) < 0) {
|
||||
if (!SDL_size_add_check_overflow(w, 1, &s1)) {
|
||||
return SDL_SetError("width + 1 would overflow");
|
||||
}
|
||||
s1 = s1 / 2;
|
||||
if (SDL_size_add_overflow(h, 1, &s2) < 0) {
|
||||
if (!SDL_size_add_check_overflow(h, 1, &s2)) {
|
||||
return SDL_SetError("height + 1 would overflow");
|
||||
}
|
||||
s2 = s2 / 2;
|
||||
if (SDL_size_mul_overflow(s1, s2, &s3) < 0) {
|
||||
if (!SDL_size_mul_check_overflow(s1, s2, &s3)) {
|
||||
return SDL_SetError("width * height would overflow");
|
||||
}
|
||||
sz_plane_chroma = (int) s3;
|
||||
@@ -68,11 +68,11 @@ bool SDL_CalculateYUVSize(SDL_PixelFormat format, int w, int h, size_t *size, si
|
||||
} else {
|
||||
/* sz_plane_packed == ((w + 1) / 2) * h; */
|
||||
size_t s1, s2;
|
||||
if (SDL_size_add_overflow(w, 1, &s1) < 0) {
|
||||
if (!SDL_size_add_check_overflow(w, 1, &s1)) {
|
||||
return SDL_SetError("width + 1 would overflow");
|
||||
}
|
||||
s1 = s1 / 2;
|
||||
if (SDL_size_mul_overflow(s1, h, &s2) < 0) {
|
||||
if (!SDL_size_mul_check_overflow(s1, h, &s2)) {
|
||||
return SDL_SetError("width * height would overflow");
|
||||
}
|
||||
sz_plane_packed = (int) s2;
|
||||
@@ -89,10 +89,10 @@ bool SDL_CalculateYUVSize(SDL_PixelFormat format, int w, int h, size_t *size, si
|
||||
if (size) {
|
||||
// dst_size == sz_plane + sz_plane_chroma + sz_plane_chroma;
|
||||
size_t s1, s2;
|
||||
if (SDL_size_add_overflow(sz_plane, sz_plane_chroma, &s1) < 0) {
|
||||
if (!SDL_size_add_check_overflow(sz_plane, sz_plane_chroma, &s1)) {
|
||||
return SDL_SetError("Y + U would overflow");
|
||||
}
|
||||
if (SDL_size_add_overflow(s1, sz_plane_chroma, &s2) < 0) {
|
||||
if (!SDL_size_add_check_overflow(s1, sz_plane_chroma, &s2)) {
|
||||
return SDL_SetError("Y + U + V would overflow");
|
||||
}
|
||||
*size = (int)s2;
|
||||
@@ -106,11 +106,11 @@ bool SDL_CalculateYUVSize(SDL_PixelFormat format, int w, int h, size_t *size, si
|
||||
if (pitch) {
|
||||
/* pitch == ((w + 1) / 2) * 4; */
|
||||
size_t p1, p2;
|
||||
if (SDL_size_add_overflow(w, 1, &p1) < 0) {
|
||||
if (!SDL_size_add_check_overflow(w, 1, &p1)) {
|
||||
return SDL_SetError("width + 1 would overflow");
|
||||
}
|
||||
p1 = p1 / 2;
|
||||
if (SDL_size_mul_overflow(p1, 4, &p2) < 0) {
|
||||
if (!SDL_size_mul_check_overflow(p1, 4, &p2)) {
|
||||
return SDL_SetError("width * 4 would overflow");
|
||||
}
|
||||
*pitch = p2;
|
||||
@@ -119,7 +119,7 @@ bool SDL_CalculateYUVSize(SDL_PixelFormat format, int w, int h, size_t *size, si
|
||||
if (size) {
|
||||
/* dst_size == 4 * sz_plane_packed; */
|
||||
size_t s1;
|
||||
if (SDL_size_mul_overflow(sz_plane_packed, 4, &s1) < 0) {
|
||||
if (!SDL_size_mul_check_overflow(sz_plane_packed, 4, &s1)) {
|
||||
return SDL_SetError("plane * 4 would overflow");
|
||||
}
|
||||
*size = (int) s1;
|
||||
@@ -135,10 +135,10 @@ bool SDL_CalculateYUVSize(SDL_PixelFormat format, int w, int h, size_t *size, si
|
||||
if (size) {
|
||||
// dst_size == sz_plane + sz_plane_chroma + sz_plane_chroma;
|
||||
size_t s1, s2;
|
||||
if (SDL_size_add_overflow(sz_plane, sz_plane_chroma, &s1) < 0) {
|
||||
if (!SDL_size_add_check_overflow(sz_plane, sz_plane_chroma, &s1)) {
|
||||
return SDL_SetError("Y + U would overflow");
|
||||
}
|
||||
if (SDL_size_add_overflow(s1, sz_plane_chroma, &s2) < 0) {
|
||||
if (!SDL_size_add_check_overflow(s1, sz_plane_chroma, &s2)) {
|
||||
return SDL_SetError("Y + U + V would overflow");
|
||||
}
|
||||
*size = (int) s2;
|
||||
|
||||
Reference in New Issue
Block a user