From bbb7cdecc2d22277a639bb4d091e0b66c7ce57e8 Mon Sep 17 00:00:00 2001 From: notaz Date: Sat, 23 Mar 2024 00:57:41 +0200 Subject: [PATCH] gpulib: fix frameskip on weird lists notaz/pcsx_rearmed#337 --- plugins/gpulib/gpu.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/plugins/gpulib/gpu.c b/plugins/gpulib/gpu.c index c0603e08..289e286b 100644 --- a/plugins/gpulib/gpu.c +++ b/plugins/gpulib/gpu.c @@ -576,6 +576,10 @@ static noinline int do_cmd_list_skip(uint32_t *data, int count, int *last_cmd) uint32_t *list = data + pos; cmd = LE32TOH(list[0]) >> 24; len = 1 + cmd_lengths[cmd]; + if (pos + len > count) { + cmd = -1; + break; // incomplete cmd + } switch (cmd) { case 0x02: @@ -615,11 +619,6 @@ static noinline int do_cmd_list_skip(uint32_t *data, int count, int *last_cmd) gpu.ex_regs[cmd & 7] = LE32TOH(list[0]); break; } - - if (pos + len > count) { - cmd = -1; - break; // incomplete cmd - } if (0x80 <= cmd && cmd <= 0xdf) break; // image i/o -- 2.39.5