[Fontconfig] fontconfig: Branch 'master'

Behdad Esfahbod behdad at kemper.freedesktop.org
Mon Apr 16 13:25:28 UTC 2018


 fc-lang/fc-lang.c |    2 +-
 src/fcfreetype.c  |   10 +++++-----
 src/fcint.h       |    2 +-
 src/fclang.c      |   10 +++++-----
 4 files changed, 12 insertions(+), 12 deletions(-)

New commits:
commit c60ed9ef66e59584f8b54323018e9e6c69925c7e
Author: Tom Anderson <thomasanderson at chromium.org>
Date:   Wed Apr 11 11:39:56 2018 -0700

    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 <<".

diff --git a/fc-lang/fc-lang.c b/fc-lang/fc-lang.c
index 4a650e0..503d712 100644
--- a/fc-lang/fc-lang.c
+++ b/fc-lang/fc-lang.c
@@ -254,7 +254,7 @@ static int compare (const void *a, const void *b)
 #define MAX_LANG	    1024
 #define MAX_LANG_SET_MAP    ((MAX_LANG + 31) / 32)
 
-#define BitSet(map, i)   ((map)[(entries[i].id)>>5] |= ((FcChar32) 1 << ((entries[i].id) & 0x1f)))
+#define BitSet(map, i)   ((map)[(entries[i].id)>>5] |= ((FcChar32) 1U << ((entries[i].id) & 0x1f)))
 
 int
 main (int argc FC_UNUSED, char **argv)
diff --git a/src/fcfreetype.c b/src/fcfreetype.c
index 0c2f266..6af1c51 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 5de311f..d837a38 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 eadf34b..687e2a7 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))


More information about the Fontconfig mailing list