Bug 19113 - read.c stringer assertion
authorAlan Modra <amodra@gmail.com>
Sat, 10 Oct 2015 00:18:05 +0000 (10:48 +1030)
committerAlan Modra <amodra@gmail.com>
Sat, 10 Oct 2015 00:21:20 +0000 (10:51 +1030)
Fails due to signed char promotion.

PR gas/19113
* read.c (next_char_of_string): Mask char after escape.  Use
CHAR_MASK rather than 0xff.

gas/ChangeLog
gas/read.c

index 1d08101feadc145b68d2d93744096af9e73aca77..90b358bd70f63dbc3b1d7be296992c784f63b327 100644 (file)
@@ -1,3 +1,9 @@
+2015-10-10  Alan Modra  <amodra@gmail.com>
+
+       PR gas/19113
+       * read.c (next_char_of_string): Mask char after escape.  Use
+       CHAR_MASK rather than 0xff.
+
 2015-10-07  Yao Qi  <yao.qi@linaro.org>
 
        * config/tc-aarch64.c (md_begin): Access field 'name' rather
index a3e83c3440c617d74dfd692abbd49c5cfee1466f..53440de8c539b5055bdd1791f3fcd2ab1c7c938b 100644 (file)
@@ -5415,7 +5415,7 @@ next_char_of_string (void)
 
 #ifndef NO_STRING_ESCAPES
     case '\\':
-      switch (c = *input_line_pointer++)
+      switch (c = *input_line_pointer++ & CHAR_MASK)
        {
        case 'b':
          c = '\b';
@@ -5466,7 +5466,7 @@ next_char_of_string (void)
                number = number * 8 + c - '0';
              }
 
-           c = number & 0xff;
+           c = number & CHAR_MASK;
          }
          --input_line_pointer;
          break;
@@ -5488,7 +5488,7 @@ next_char_of_string (void)
                  number = number * 16 + c - 'a' + 10;
                c = *input_line_pointer++;
              }
-           c = number & 0xff;
+           c = number & CHAR_MASK;
            --input_line_pointer;
          }
          break;