瀏覽代碼

time_zone_manager: Compare to the correct boolean

Reference implementation does not compare the booleans as we had them.
Use the correct ones as in the reference.

Also adds an assert. I have been made aware of a crash here and am
not able to reproduce currently.
lat9nq 3 年之前
父節點
當前提交
8d8f850bd6
共有 1 個文件被更改,包括 3 次插入2 次删除
  1. 3 2
      src/core/hle/service/time/time_zone_manager.cpp

+ 3 - 2
src/core/hle/service/time/time_zone_manager.cpp

@@ -849,8 +849,9 @@ static Result CreateCalendarTime(s64 time, int gmt_offset, CalendarTimeInternal&
 static Result ToCalendarTimeInternal(const TimeZoneRule& rules, s64 time,
 static Result ToCalendarTimeInternal(const TimeZoneRule& rules, s64 time,
                                      CalendarTimeInternal& calendar_time,
                                      CalendarTimeInternal& calendar_time,
                                      CalendarAdditionalInfo& calendar_additional_info) {
                                      CalendarAdditionalInfo& calendar_additional_info) {
-    if ((rules.go_ahead && time < rules.ats[0]) ||
-        (rules.go_back && time > rules.ats[rules.time_count - 1])) {
+    ASSERT(rules.go_ahead ? rules.time_count > 0 : true);
+    if ((rules.go_back && time < rules.ats[0]) ||
+        (rules.go_ahead && time > rules.ats[rules.time_count - 1])) {
         s64 seconds{};
         s64 seconds{};
         if (time < rules.ats[0]) {
         if (time < rules.ats[0]) {
             seconds = rules.ats[0] - time;
             seconds = rules.ats[0] - time;