aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/python/libstdcxx
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2023-08-11 12:27:58 +0100
committerJonathan Wakely <jwakely@redhat.com>2023-08-11 14:33:01 +0100
commitc19b542a177b7b65b013e535ae9f384352808d11 (patch)
treee6487e8d8c1393a9219c441ce4ec08fd6c5d4a2d /libstdc++-v3/python/libstdcxx
parent7723684fafd085bb567579461fb54a746abbea4f (diff)
downloadgcc-c19b542a177b7b65b013e535ae9f384352808d11.zip
gcc-c19b542a177b7b65b013e535ae9f384352808d11.tar.gz
gcc-c19b542a177b7b65b013e535ae9f384352808d11.tar.bz2
libstdc++: Handle invalid values in std::chrono pretty printers
This avoids an IndexError exception when printing invalid chrono::month or chrono::weekday values. libstdc++-v3/ChangeLog: * python/libstdcxx/v6/printers.py (StdChronoCalendarPrinter): Check for out-of-range month an weekday indices. * testsuite/libstdc++-prettyprinters/chrono.cc: Check invalid month and weekday values.
Diffstat (limited to 'libstdc++-v3/python/libstdcxx')
-rw-r--r--libstdc++-v3/python/libstdcxx/v6/printers.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py
index b4c427d..0187c4b 100644
--- a/libstdc++-v3/python/libstdcxx/v6/printers.py
+++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
@@ -2021,11 +2021,16 @@ class StdChronoCalendarPrinter:
if typ == 'std::chrono::day':
return '{}'.format(int(val['_M_d']))
if typ == 'std::chrono::month':
+ if m < 1 or m >= len(months):
+ return "%d is not a valid month" % m
return months[m]
if typ == 'std::chrono::year':
return '{}y'.format(y)
if typ == 'std::chrono::weekday':
- return '{}'.format(weekdays[val['_M_wd']])
+ wd = val['_M_wd']
+ if wd < 0 or wd >= len(weekdays):
+ return "%d is not a valid weekday" % wd
+ return '{}'.format(weekdays[wd])
if typ == 'std::chrono::weekday_indexed':
return '{}[{}]'.format(val['_M_wd'], int(val['_M_index']))
if typ == 'std::chrono::weekday_last':