Fossil SCM

Do not allow integer left-shift overflow in TH1, because gcc 14.2.0 hates that. [forum:/info/6c1653220d4e12ec|Forum post 6c1653220].

drh 2025-04-09 21:12 trunk
Commit c66b19670f0250f48378bde6875868523eb1d4b4814db4f96ec86a5ed020955f
1 file changed +5 -2
+5 -2
--- src/th.c
+++ src/th.c
@@ -2160,12 +2160,15 @@
21602160
}
21612161
iRes = iLeft%iRight;
21622162
break;
21632163
case OP_ADD: iRes = iLeft+iRight; break;
21642164
case OP_SUBTRACT: iRes = iLeft-iRight; break;
2165
- case OP_LEFTSHIFT: iRes = iLeft<<iRight; break;
2166
- case OP_RIGHTSHIFT: iRes = iLeft>>iRight; break;
2165
+ case OP_LEFTSHIFT: {
2166
+ iRes = (int)(((unsigned int)iLeft)<<(iRight&0x1f));
2167
+ break;
2168
+ }
2169
+ case OP_RIGHTSHIFT: iRes = iLeft>>(iRight&0x1f); break;
21672170
case OP_LT: iRes = iLeft<iRight; break;
21682171
case OP_GT: iRes = iLeft>iRight; break;
21692172
case OP_LE: iRes = iLeft<=iRight; break;
21702173
case OP_GE: iRes = iLeft>=iRight; break;
21712174
case OP_EQ: iRes = iLeft==iRight; break;
21722175
--- src/th.c
+++ src/th.c
@@ -2160,12 +2160,15 @@
2160 }
2161 iRes = iLeft%iRight;
2162 break;
2163 case OP_ADD: iRes = iLeft+iRight; break;
2164 case OP_SUBTRACT: iRes = iLeft-iRight; break;
2165 case OP_LEFTSHIFT: iRes = iLeft<<iRight; break;
2166 case OP_RIGHTSHIFT: iRes = iLeft>>iRight; break;
 
 
 
2167 case OP_LT: iRes = iLeft<iRight; break;
2168 case OP_GT: iRes = iLeft>iRight; break;
2169 case OP_LE: iRes = iLeft<=iRight; break;
2170 case OP_GE: iRes = iLeft>=iRight; break;
2171 case OP_EQ: iRes = iLeft==iRight; break;
2172
--- src/th.c
+++ src/th.c
@@ -2160,12 +2160,15 @@
2160 }
2161 iRes = iLeft%iRight;
2162 break;
2163 case OP_ADD: iRes = iLeft+iRight; break;
2164 case OP_SUBTRACT: iRes = iLeft-iRight; break;
2165 case OP_LEFTSHIFT: {
2166 iRes = (int)(((unsigned int)iLeft)<<(iRight&0x1f));
2167 break;
2168 }
2169 case OP_RIGHTSHIFT: iRes = iLeft>>(iRight&0x1f); break;
2170 case OP_LT: iRes = iLeft<iRight; break;
2171 case OP_GT: iRes = iLeft>iRight; break;
2172 case OP_LE: iRes = iLeft<=iRight; break;
2173 case OP_GE: iRes = iLeft>=iRight; break;
2174 case OP_EQ: iRes = iLeft==iRight; break;
2175

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button