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)