1<<31 upsets ubsan
This commit is contained in:
@@ -271,7 +271,7 @@ static long special(DBADDR *paddr, int after)
|
||||
} else if(after==1 && fieldIndex >= mbboDirectRecordB0 && fieldIndex <= mbboDirectRecordB1F) {
|
||||
/* Adjust VAL corresponding to the bit changed */
|
||||
epicsUInt8 *pBn = (epicsUInt8 *) paddr->pfield;
|
||||
epicsUInt32 bit = 1 << (pBn - &prec->b0);
|
||||
epicsUInt32 bit = 1u << (pBn - &prec->b0);
|
||||
|
||||
/* Because this is !(VAL and PP), dbPut() will always post a monitor on this B* field
|
||||
* after we return. We must keep track of this change separately from MLST to handle
|
||||
|
||||
@@ -123,7 +123,7 @@ MAIN(mbbioDirectTest)
|
||||
|
||||
testDiag("##### clear bit 31 (0x1f) #####");
|
||||
putN("do%u.B1F", N, 0);
|
||||
value &= ~(1<<31);
|
||||
value &= ~(1u<<31u);
|
||||
testN("val%d", N, value);
|
||||
testmbbioRecords(N, value);
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ set_first_derives(void)
|
||||
k = 0;
|
||||
}
|
||||
|
||||
if (cword & (1 << k))
|
||||
if (cword & (1u << k))
|
||||
{
|
||||
rp = derives[j];
|
||||
while ((rule = *rp++) >= 0)
|
||||
@@ -152,7 +152,7 @@ closure(short int *nucleus, int n)
|
||||
{
|
||||
for (i = 0; i < BITS_PER_WORD; ++i)
|
||||
{
|
||||
if (word & (1 << i))
|
||||
if (word & (1u << i))
|
||||
{
|
||||
itemno = rrhs[ruleno+i];
|
||||
while (csp < csend && *csp < itemno)
|
||||
|
||||
@@ -26,7 +26,7 @@ transitive_closure(unsigned int *R, int n)
|
||||
|
||||
while (rowj < relend)
|
||||
{
|
||||
if (*ccol & (1 << i))
|
||||
if (*ccol & (1u << i))
|
||||
{
|
||||
rp = rowi;
|
||||
rend = rowj + rowsize;
|
||||
@@ -68,7 +68,7 @@ reflexive_transitive_closure(unsigned int *R, int n)
|
||||
rp = R;
|
||||
while (rp < relend)
|
||||
{
|
||||
*rp |= (1 << i);
|
||||
*rp |= (1u << i);
|
||||
if (++i >= BITS_PER_WORD)
|
||||
{
|
||||
i = 0;
|
||||
|
||||
Reference in New Issue
Block a user