@@ -197,7 +197,7 @@ error_code cellRtcFormatRfc2822(ppu_thread& ppu, vm::ptr<char> pszDateTime, vm::
197197
198198 s32 weekdayIdx = cellRtcGetDayOfWeek (date_time->year , date_time->month , date_time->day );
199199 // Day name
200- pszDateTime[0 ] = std::toupper (WEEKDAY_NAMES [weekdayIdx][0 ]);
200+ pszDateTime[0 ] = std::toupper (static_cast <uchar>( WEEKDAY_NAMES [weekdayIdx][0 ]) );
201201 pszDateTime[1 ] = WEEKDAY_NAMES [weekdayIdx][1 ];
202202 pszDateTime[2 ] = WEEKDAY_NAMES [weekdayIdx][2 ];
203203 pszDateTime[3 ] = ' ,' ;
@@ -208,7 +208,7 @@ error_code cellRtcFormatRfc2822(ppu_thread& ppu, vm::ptr<char> pszDateTime, vm::
208208 pszDateTime[7 ] = ' ' ;
209209
210210 // month name
211- pszDateTime[8 ] = std::toupper (MONTH_NAMES [date_time->month - 1 ][0 ]);
211+ pszDateTime[8 ] = std::toupper (static_cast <uchar>( MONTH_NAMES [date_time->month - 1 ][0 ]) );
212212 pszDateTime[9 ] = MONTH_NAMES [date_time->month - 1 ][1 ];
213213 pszDateTime[10 ] = MONTH_NAMES [date_time->month - 1 ][2 ];
214214 pszDateTime[0xb ] = ' ' ;
@@ -433,7 +433,7 @@ u16 rtcParseComponent(vm::cptr<char> pszDateTime, u32& pos, char delimiter, cons
433433 pos++;
434434 }
435435
436- if (!std::isdigit (pszDateTime[pos]))
436+ if (!std::isdigit (static_cast <uchar>( pszDateTime[pos]) ))
437437 {
438438 cellRtc.error (" rtcParseComponent(): failed to parse %s: ASCII value 0x%x at position %d is not a digit" , component_name, pszDateTime[pos + 1 ], pos);
439439 return umax;
@@ -443,7 +443,7 @@ u16 rtcParseComponent(vm::cptr<char> pszDateTime, u32& pos, char delimiter, cons
443443
444444 pos++;
445445
446- if (std::isdigit (pszDateTime[pos]))
446+ if (std::isdigit (static_cast <uchar>( pszDateTime[pos]) ))
447447 {
448448 ret = ret * 10 + digit (pszDateTime[pos]);
449449
@@ -462,7 +462,7 @@ u8 rtcParseName(vm::cptr<char> pszDateTime, u32& pos, const std::array<std::stri
462462
463463 u32 ch_idx = 0 ;
464464
465- while (ch_idx < name_length && std::tolower (pszDateTime[pos + ch_idx]) == names[name_idx][ch_idx]) // Not case sensitive
465+ while (ch_idx < name_length && std::tolower (static_cast <uchar>( pszDateTime[pos + ch_idx]) ) == names[name_idx][ch_idx]) // Not case sensitive
466466 {
467467 ch_idx++;
468468 }
@@ -520,15 +520,15 @@ error_code rtcParseRfc2822(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::cptr<
520520 // Year: "XX" or "XXXX"
521521 u16 year = 0 ;
522522
523- if (!std::isdigit (pszDateTime[pos]) ||
524- !std::isdigit (pszDateTime[pos + 1 ]))
523+ if (!std::isdigit (static_cast <uchar>( pszDateTime[pos]) ) ||
524+ !std::isdigit (static_cast <uchar>( pszDateTime[pos + 1 ]) ))
525525 {
526526 return { CELL_RTC_ERROR_BAD_PARSE , " rtcParseRfc2822(): failed to parse year: one of the first two ASCII values 0x%x, 0x%x at position %d is not a digit" ,
527527 pszDateTime[pos], pszDateTime[pos + 1 ], pos };
528528 }
529529
530- if (!std::isdigit (pszDateTime[pos + 2 ]) ||
531- !std::isdigit (pszDateTime[pos + 3 ]))
530+ if (!std::isdigit (static_cast <uchar>( pszDateTime[pos + 2 ]) ) ||
531+ !std::isdigit (static_cast <uchar>( pszDateTime[pos + 3 ]) ))
532532 {
533533 year = digit (pszDateTime[pos]) * 10 + digit (pszDateTime[pos + 1 ]);
534534 year += (year < 50 ) ? 2000 : 1900 ;
@@ -591,10 +591,10 @@ error_code rtcParseRfc2822(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::cptr<
591591 {
592592 // "±hhmm"
593593
594- if (std::isdigit (pszDateTime[pos + 1 ]) &&
595- std::isdigit (pszDateTime[pos + 2 ]) &&
596- std::isdigit (pszDateTime[pos + 3 ]) &&
597- std::isdigit (pszDateTime[pos + 4 ]))
594+ if (std::isdigit (static_cast <uchar>( pszDateTime[pos + 1 ]) ) &&
595+ std::isdigit (static_cast <uchar>( pszDateTime[pos + 2 ]) ) &&
596+ std::isdigit (static_cast <uchar>( pszDateTime[pos + 3 ]) ) &&
597+ std::isdigit (static_cast <uchar>( pszDateTime[pos + 4 ]) ))
598598 {
599599 const s32 time_zone_hhmm = digit (pszDateTime[pos + 1 ]) * 1000 + digit (pszDateTime[pos + 2 ]) * 100 + digit (pszDateTime[pos + 3 ]) * 10 + digit (pszDateTime[pos + 4 ]);
600600
@@ -627,7 +627,7 @@ error_code rtcParseRfc2822(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::cptr<
627627 // "A", "B", "C", ..., not case sensitive
628628 // These are all off by one ("A" should be UTC+01:00, "B" should be UTC+02:00, etc.)
629629
630- const char letter = std::toupper (pszDateTime[pos]);
630+ const char letter = std::toupper (static_cast <uchar>( pszDateTime[pos]) );
631631
632632 if (letter >= ' A' && letter <= ' M' && letter != ' J' )
633633 {
@@ -671,15 +671,15 @@ error_code cellRtcParseDateTime(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::
671671
672672 u32 pos = 0 ;
673673
674- while (std::isblank (pszDateTime[pos]))
674+ while (std::isblank (static_cast <uchar>( pszDateTime[pos]) ))
675675 {
676676 pos++;
677677 }
678678
679- if (std::isdigit (pszDateTime[pos]) &&
680- std::isdigit (pszDateTime[pos + 1 ]) &&
681- std::isdigit (pszDateTime[pos + 2 ]) &&
682- std::isdigit (pszDateTime[pos + 3 ]))
679+ if (std::isdigit (static_cast <uchar>( pszDateTime[pos]) ) &&
680+ std::isdigit (static_cast <uchar>( pszDateTime[pos + 1 ]) ) &&
681+ std::isdigit (static_cast <uchar>( pszDateTime[pos + 2 ]) ) &&
682+ std::isdigit (static_cast <uchar>( pszDateTime[pos + 3 ]) ))
683683 {
684684 return cellRtcParseRfc3339 (ppu, pUtc, pszDateTime + pos);
685685 }
@@ -697,7 +697,7 @@ error_code cellRtcParseDateTime(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::
697697 }
698698
699699 // Skip spaces and tabs
700- while (std::isblank (pszDateTime[pos]))
700+ while (std::isblank (static_cast <uchar>( pszDateTime[pos]) ))
701701 {
702702 pos++;
703703 }
@@ -742,13 +742,13 @@ error_code cellRtcParseDateTime(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::
742742
743743 pos++;
744744 }
745- else if (std::isdigit (pszDateTime[pos]))
745+ else if (std::isdigit (static_cast <uchar>( pszDateTime[pos]) ))
746746 {
747747 day = digit (pszDateTime[pos]);
748748
749749 pos++;
750750
751- if (std::isdigit (pszDateTime[pos]))
751+ if (std::isdigit (static_cast <uchar>( pszDateTime[pos]) ))
752752 {
753753 day = day * 10 + digit (pszDateTime[pos]);
754754
@@ -793,10 +793,10 @@ error_code cellRtcParseDateTime(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::
793793 pos++;
794794
795795 // Year: XXXX
796- if (!std::isdigit (pszDateTime[pos]) ||
797- !std::isdigit (pszDateTime[pos + 1 ]) ||
798- !std::isdigit (pszDateTime[pos + 2 ]) ||
799- !std::isdigit (pszDateTime[pos + 3 ]))
796+ if (!std::isdigit (static_cast <uchar>( pszDateTime[pos]) ) ||
797+ !std::isdigit (static_cast <uchar>( pszDateTime[pos + 1 ]) ) ||
798+ !std::isdigit (static_cast <uchar>( pszDateTime[pos + 2 ]) ) ||
799+ !std::isdigit (static_cast <uchar>( pszDateTime[pos + 3 ]) ))
800800 {
801801 return { CELL_RTC_ERROR_BAD_PARSE , " cellRtcParseDateTime(): failed to parse year: one of the ASCII values 0x%x, 0x%x, 0x%x, or 0x%x is not a digit" ,
802802 pszDateTime[pos], pszDateTime[pos + 1 ], pszDateTime[pos + 2 ], pszDateTime[pos + 3 ] };
@@ -831,7 +831,10 @@ error_code cellRtcParseRfc3339(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::c
831831 vm::var<CellRtcDateTime> date_time;
832832
833833 // Year: XXXX-12-03T13:23:00.00Z
834- if (std::isdigit (pszDateTime[0 ]) && std::isdigit (pszDateTime[1 ]) && std::isdigit (pszDateTime[2 ]) && std::isdigit (pszDateTime[3 ]))
834+ if (std::isdigit (static_cast <uchar>(pszDateTime[0 ])) &&
835+ std::isdigit (static_cast <uchar>(pszDateTime[1 ])) &&
836+ std::isdigit (static_cast <uchar>(pszDateTime[2 ])) &&
837+ std::isdigit (static_cast <uchar>(pszDateTime[3 ])))
835838 {
836839 date_time->year = digit (pszDateTime[0 ]) * 1000 + digit (pszDateTime[1 ]) * 100 + digit (pszDateTime[2 ]) * 10 + digit (pszDateTime[3 ]);
837840 }
@@ -846,7 +849,7 @@ error_code cellRtcParseRfc3339(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::c
846849 }
847850
848851 // Month: 1995-XX-03T13:23:00.00Z
849- if (std::isdigit (pszDateTime[5 ]) && std::isdigit (pszDateTime[6 ]))
852+ if (std::isdigit (static_cast <uchar>( pszDateTime[5 ])) && std::isdigit (static_cast <uchar>( pszDateTime[6 ]) ))
850853 {
851854 date_time->month = digit (pszDateTime[5 ]) * 10 + digit (pszDateTime[6 ]);
852855 }
@@ -861,7 +864,7 @@ error_code cellRtcParseRfc3339(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::c
861864 }
862865
863866 // Day: 1995-12-XXT13:23:00.00Z
864- if (std::isdigit (pszDateTime[8 ]) && std::isdigit (pszDateTime[9 ]))
867+ if (std::isdigit (static_cast <uchar>( pszDateTime[8 ])) && std::isdigit (static_cast <uchar>( pszDateTime[9 ]) ))
865868 {
866869 date_time->day = digit (pszDateTime[8 ]) * 10 + digit (pszDateTime[9 ]);
867870 }
@@ -876,7 +879,7 @@ error_code cellRtcParseRfc3339(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::c
876879 }
877880
878881 // Hour: 1995-12-03TXX:23:00.00Z
879- if (std::isdigit (pszDateTime[11 ]) && std::isdigit (pszDateTime[12 ]))
882+ if (std::isdigit (static_cast <uchar>( pszDateTime[11 ])) && std::isdigit (static_cast <uchar>( pszDateTime[12 ]) ))
880883 {
881884 date_time->hour = digit (pszDateTime[11 ]) * 10 + digit (pszDateTime[12 ]);
882885 }
@@ -891,7 +894,7 @@ error_code cellRtcParseRfc3339(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::c
891894 }
892895
893896 // Minute: 1995-12-03T13:XX:00.00Z
894- if (std::isdigit (pszDateTime[14 ]) && std::isdigit (pszDateTime[15 ]))
897+ if (std::isdigit (static_cast <uchar>( pszDateTime[14 ])) && std::isdigit (static_cast <uchar>( pszDateTime[15 ]) ))
895898 {
896899 date_time->minute = digit (pszDateTime[14 ]) * 10 + digit (pszDateTime[15 ]);
897900 }
@@ -906,7 +909,7 @@ error_code cellRtcParseRfc3339(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::c
906909 }
907910
908911 // Second: 1995-12-03T13:23:XX.00Z
909- if (std::isdigit (pszDateTime[17 ]) && std::isdigit (pszDateTime[18 ]))
912+ if (std::isdigit (static_cast <uchar>( pszDateTime[17 ])) && std::isdigit (static_cast <uchar>( pszDateTime[18 ]) ))
910913 {
911914 date_time->second = digit (pszDateTime[17 ]) * 10 + digit (pszDateTime[18 ]);
912915 }
@@ -923,7 +926,7 @@ error_code cellRtcParseRfc3339(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::c
923926 {
924927 u32 mul = 100000 ;
925928
926- for (char c = pszDateTime[++pos]; std::isdigit (c ); c = pszDateTime[++pos])
929+ for (char c = pszDateTime[++pos]; std::isdigit (static_cast <uchar>(c) ); c = pszDateTime[++pos])
927930 {
928931 date_time->microsecond += digit (c) * mul;
929932 mul /= 10 ;
@@ -942,11 +945,11 @@ error_code cellRtcParseRfc3339(ppu_thread& ppu, vm::ptr<CellRtcTick> pUtc, vm::c
942945 // Time offset: 1995-12-03T13:23:00.00+02:30
943946 if (sign == ' +' || sign == ' -' )
944947 {
945- if (!std::isdigit (pszDateTime[pos + 1 ]) ||
946- !std::isdigit (pszDateTime[pos + 2 ]) ||
948+ if (!std::isdigit (static_cast <uchar>( pszDateTime[pos + 1 ]) ) ||
949+ !std::isdigit (static_cast <uchar>( pszDateTime[pos + 2 ]) ) ||
947950 pszDateTime[pos + 3 ] != ' :' ||
948- !std::isdigit (pszDateTime[pos + 4 ]) ||
949- !std::isdigit (pszDateTime[pos + 5 ]))
951+ !std::isdigit (static_cast <uchar>( pszDateTime[pos + 4 ]) ) ||
952+ !std::isdigit (static_cast <uchar>( pszDateTime[pos + 5 ]) ))
950953 {
951954 return CELL_RTC_ERROR_BAD_PARSE ;
952955 }
0 commit comments