diff --git a/rpcs3/Emu/Cell/Modules/sys_libc_.cpp b/rpcs3/Emu/Cell/Modules/sys_libc_.cpp index 7f3eca9cb8..321f89c815 100644 --- a/rpcs3/Emu/Cell/Modules/sys_libc_.cpp +++ b/rpcs3/Emu/Cell/Modules/sys_libc_.cpp @@ -189,11 +189,22 @@ vm::ptr _sys_memmove(vm::ptr dst, vm::cptr src, u32 size) return dst; } -s64 _sys_strlen(vm::cptr str) +u32 _sys_strlen(vm::cptr str) { sysPrxForUser.trace("_sys_strlen(str=%s)", str); - return std::strlen(str.get_ptr()); + if (!str) + { + return 0; + } + + for (u32 i = 0;; i++) + { + if (str[i] == '\0') + { + return i; + } + } } s32 _sys_strcmp(vm::cptr str1, vm::cptr str2)