diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2021-12-16 21:02:15 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2021-12-16 21:02:15 (GMT) |
commit | 6a3a8ae8ff86616bd067ce4fdc775550903afab9 (patch) | |
tree | 9c84ad1a1b503cbd06aed6cd9dfe7025cc210634 /generic | |
parent | 22325d1e0843a7d1511f7ec81a4958939ab3faaf (diff) | |
download | tcl-6a3a8ae8ff86616bd067ce4fdc775550903afab9.zip tcl-6a3a8ae8ff86616bd067ce4fdc775550903afab9.tar.gz tcl-6a3a8ae8ff86616bd067ce4fdc775550903afab9.tar.bz2 |
Suggested fix for [b0f84119c8]: TEBCresume(): undefined behavior for INST_LSHIFT
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tclExecute.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 8963472..7e014d4 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -6379,10 +6379,10 @@ TEBCresume( * Handle shifts within the native long range. */ - if ((size_t) shift < CHAR_BIT*sizeof(long) && (l1 != 0) + if (((size_t) shift < CHAR_BIT*sizeof(long)) && !((l1>0 ? l1 : ~l1) & - -(1L<<(CHAR_BIT*sizeof(long) - 1 - shift)))) { - lResult = l1 << shift; + -(1UL<<(CHAR_BIT*sizeof(long) - 1 - shift)))) { + lResult = (unsigned long)l1 << shift; goto longResultOfArithmetic; } } |