From b60c71c3622851a315b1a96254584c4d8f91d284 Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Tue, 11 Jul 2023 23:55:20 +0300
Subject: [PATCH] fix RWops read and write return values.
---
src/sdl2_compat.c | 36 ++++++++++++++++++++++++++++++++----
1 file changed, 32 insertions(+), 4 deletions(-)
diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index b32a44b..ab7145c 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -1755,15 +1755,43 @@ RWops3to2_seek(SDL2_RWops *rwops2, Sint64 offset, int whence)
static size_t SDLCALL
RWops3to2_read(SDL2_RWops *rwops2, void *ptr, size_t size, size_t maxnum)
{
- const Sint64 br = SDL3_RWread(rwops2->hidden.sdl3.rwops, ptr, ((Sint64) size) * ((Sint64) maxnum));
- return (br <= 0) ? 0 : (size_t) br;
+ Sint64 br;
+ size_t nmemb;
+ if (!size || !maxnum) {
+ return 0;
+ }
+ br = SDL3_RWread(rwops2->hidden.sdl3.rwops, ptr, ((Sint64) size) * ((Sint64) maxnum));
+ if (br <= 0) {
+ return 0;
+ }
+ nmemb = (size_t) br / size;
+ #if 0
+ if ((size_t) br % size) { /* last member partially read? */
+ nmemb++;
+ }
+ #endif
+ return nmemb;
}
static size_t SDLCALL
RWops3to2_write(SDL2_RWops *rwops2, const void *ptr, size_t size, size_t maxnum)
{
- const Sint64 bw = SDL3_RWwrite(rwops2->hidden.sdl3.rwops, ptr, ((Sint64) size) * ((Sint64) maxnum));
- return (bw <= 0) ? 0 : (size_t) bw;
+ Sint64 bw;
+ size_t nmemb;
+ if (!size || !maxnum) {
+ return 0;
+ }
+ bw = SDL3_RWwrite(rwops2->hidden.sdl3.rwops, ptr, ((Sint64) size) * ((Sint64) maxnum));
+ if (bw <= 0) {
+ return 0;
+ }
+ nmemb = (size_t) bw / size;
+ #if 0
+ if ((size_t) bw % size) { /* last member partially written? */
+ nmemb++;
+ }
+ #endif
+ return nmemb;
}
static int SDLCALL