From 83f93202d02a5ec4fbc6ea81fefe737225124eb3 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Sun, 17 Sep 2017 13:52:57 +0300 Subject: [PATCH] Rewrite _sys_memcmp --- rpcs3/Emu/Cell/Modules/sys_libc_.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/Cell/Modules/sys_libc_.cpp b/rpcs3/Emu/Cell/Modules/sys_libc_.cpp index ca51fcf6d8..2bc1436645 100644 --- a/rpcs3/Emu/Cell/Modules/sys_libc_.cpp +++ b/rpcs3/Emu/Cell/Modules/sys_libc_.cpp @@ -135,11 +135,26 @@ vm::ptr _sys_memcpy(vm::ptr dst, vm::cptr src, u32 size) return dst; } -s32 _sys_memcmp(vm::cptr buf1, vm::cptr buf2, u32 size) +s32 _sys_memcmp(vm::cptr buf1, vm::cptr buf2, u32 size) { sysPrxForUser.trace("_sys_memcmp(buf1=*0x%x, buf2=*0x%x, size=%d)", buf1, buf2, size); - return std::memcmp(buf1.get_ptr(), buf2.get_ptr(), size); + for (u32 i = 0; i < size; i++) + { + const u8 b1 = buf1[i], b2 = buf2[i]; + + if (b1 < b2) + { + return -1; + } + + if (b1 > b2) + { + return 1; + } + } + + return 0; } vm::ptr _sys_memchr(vm::ptr buf, u8 ch, s32 size)