SDL_mixer: decoder_xmp.c: handle tricky xmp_set_position() return code better

From e50ed674630353f663f2bc314eb758d6d8f1e2fe Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Wed, 11 Mar 2026 05:10:10 +0300
Subject: [PATCH] decoder_xmp.c: handle tricky xmp_set_position() return code
 better

---
 src/decoder_xmp.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/decoder_xmp.c b/src/decoder_xmp.c
index 6282e47c..731a3345 100644
--- a/src/decoder_xmp.c
+++ b/src/decoder_xmp.c
@@ -282,7 +282,13 @@ static bool SDLCALL XMP_seek(void *track_userdata, Uint64 frame)
 static bool SDLCALL XMP_jump_to_order(void *track_userdata, int order)
 {
     XMP_TrackData *tdata = (XMP_TrackData *) track_userdata;
-    return libxmp.xmp_set_position(tdata->ctx, order);
+    int err = libxmp.xmp_set_position(tdata->ctx, order);
+    switch (err) {
+    case -XMP_ERROR_STATE:
+    case -XMP_ERROR_INVALID:
+        return SetLibXmpError("xmp_set_position", err);
+    }
+    return true;
 }
 
 static void SDLCALL XMP_quit_track(void *track_userdata)