sdl2-compat: fix RWops read and write return values.

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