From 621077536cd5f5aa4cd8cd991e63328af4fcca39 Mon Sep 17 00:00:00 2001 From: Gliniak Date: Sun, 24 Nov 2019 09:32:30 +0100 Subject: [PATCH] [KERNEL] Do not convert time if provided time_ptr is invalid (Fixes Dark Souls crash) --- src/xenia/kernel/xboxkrnl/xboxkrnl_rtl.cc | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/xenia/kernel/xboxkrnl/xboxkrnl_rtl.cc b/src/xenia/kernel/xboxkrnl/xboxkrnl_rtl.cc index d792ccdf9..4c7765627 100644 --- a/src/xenia/kernel/xboxkrnl/xboxkrnl_rtl.cc +++ b/src/xenia/kernel/xboxkrnl/xboxkrnl_rtl.cc @@ -512,14 +512,10 @@ static_assert(sizeof(X_TIME_FIELDS) == 16, "Must be LARGEINTEGER"); // https://support.microsoft.com/en-us/kb/167296 void RtlTimeToTimeFields(lpqword_t time_ptr, pointer_t time_fields_ptr) { - // int64_t time_ms = time_ptr.value() / 10000 - 11644473600000LL; - // TEST - long long inttime = 11644473600000; - long long timeptrval = time_ptr.value(); - if (timeptrval) { - inttime = timeptrval; - } - int64_t time_ms = (short)((inttime % 10000000) / 10000); + if (!time_ptr.value()) + return; + + int64_t time_ms = time_ptr.value() / 10000 - 11644473600000LL; time_t timet = time_ms / 1000; struct tm* tm = gmtime(&timet);