summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Anderson <thomasanderson@chromium.org>2018-04-11 11:39:56 -0700
committerBehdad Esfahbod <behdad@behdad.org>2018-04-16 15:23:20 +0200
commitc60ed9ef66e59584f8b54323018e9e6c69925c7e (patch)
tree51f5e68cbaa99a056bdff8d7c922d30d30843ca6 /src
parenta8a6efa805fc03e790214e8a0bc55843a258d774 (diff)
Fix undefined-shift UBSAN errors
The expression "1 << 31" will cause UBSAN to complain with this error message: runtime error: left shift of 1 by 31 places cannot be represented in type 'int' The same operation on unsigned types is fine, however. This CL replaces the strings "1 <<" with "1U <<".
Diffstat (limited to 'src')
-rw-r--r--src/fcfreetype.c10
-rw-r--r--src/fcint.h2
-rw-r--r--src/fclang.c10
3 files changed, 11 insertions, 11 deletions
diff --git a/src/fcfreetype.c b/src/fcfreetype.c
index 0c2f266a..6af1c51b 100644
--- a/src/fcfreetype.c
+++ b/src/fcfreetype.c
@@ -1290,9 +1290,9 @@ FcFreeTypeQueryFaceInternal (const FT_Face face,
for (i = 0; i < master->num_axis; i++)
{
- double min_value = master->axis[i].minimum / (double) (1 << 16);
- double def_value = master->axis[i].def / (double) (1 << 16);
- double max_value = master->axis[i].maximum / (double) (1 << 16);
+ double min_value = master->axis[i].minimum / (double) (1U << 16);
+ double def_value = master->axis[i].def / (double) (1U << 16);
+ double max_value = master->axis[i].maximum / (double) (1U << 16);
const char *elt = NULL;
if (min_value > def_value || def_value > max_value || min_value == max_value)
@@ -1349,8 +1349,8 @@ FcFreeTypeQueryFaceInternal (const FT_Face face,
for (i = 0; i < master->num_axis; i++)
{
- double value = instance->coords[i] / (double) (1 << 16);
- double default_value = master->axis[i].def / (double) (1 << 16);
+ double value = instance->coords[i] / (double) (1U << 16);
+ double default_value = master->axis[i].def / (double) (1U << 16);
double mult = default_value ? value / default_value : 1;
//printf ("named-instance, axis %d tag %lx value %g\n", i, master->axis[i].tag, value);
switch (master->axis[i].tag)
diff --git a/src/fcint.h b/src/fcint.h
index 5de311f0..d837a385 100644
--- a/src/fcint.h
+++ b/src/fcint.h
@@ -242,7 +242,7 @@ typedef enum _FcOp {
} FcOp;
typedef enum _FcOpFlags {
- FcOpFlagIgnoreBlanks = 1 << 0
+ FcOpFlagIgnoreBlanks = 1U << 0
} FcOpFlags;
#define FC_OP_GET_OP(_x_) ((_x_) & 0xffff)
diff --git a/src/fclang.c b/src/fclang.c
index eadf34bf..687e2a73 100644
--- a/src/fclang.c
+++ b/src/fclang.c
@@ -59,7 +59,7 @@ FcLangSetBitSet (FcLangSet *ls,
if (bucket >= ls->map_size)
return; /* shouldn't happen really */
- ls->map[bucket] |= ((FcChar32) 1 << (id & 0x1f));
+ ls->map[bucket] |= ((FcChar32) 1U << (id & 0x1f));
}
static FcBool
@@ -87,7 +87,7 @@ FcLangSetBitReset (FcLangSet *ls,
if (bucket >= ls->map_size)
return; /* shouldn't happen really */
- ls->map[bucket] &= ~((FcChar32) 1 << (id & 0x1f));
+ ls->map[bucket] &= ~((FcChar32) 1U << (id & 0x1f));
}
FcLangSet *
@@ -157,7 +157,7 @@ FcFreeTypeLangSet (const FcCharSet *charset,
if (map[i])
{
for (j = 0; j < 32; j++)
- if (map[i] & (1 << j))
+ if (map[i] & (1U << j))
printf (" %04x", ucs4 + i * 32 + j);
}
}
@@ -848,7 +848,7 @@ FcNameUnparseLangSet (FcStrBuf *buf, const FcLangSet *ls)
if ((bits = ls->map[i]))
{
for (bit = 0; bit <= 31; bit++)
- if (bits & (1 << bit))
+ if (bits & (1U << bit))
{
int id = (i << 5) | bit;
if (!first)
@@ -982,7 +982,7 @@ FcLangSetContains (const FcLangSet *lsa, const FcLangSet *lsb)
if (missing)
{
for (j = 0; j < 32; j++)
- if (missing & (1 << j))
+ if (missing & (1U << j))
{
if (!FcLangSetContainsLang (lsa,
fcLangCharSets[fcLangCharSetIndicesInv[i*32 + j]].lang))