* app.c (do_scrub_chars): Match open and close quote of strings.
authorAlan Modra <amodra@gmail.com>
Thu, 29 Sep 2005 02:20:50 +0000 (02:20 +0000)
committerAlan Modra <amodra@gmail.com>
Thu, 29 Sep 2005 02:20:50 +0000 (02:20 +0000)
Remove redundant EOF test in case 7.

gas/ChangeLog
gas/app.c

index 8085e676e7dfffbe99eaa41251e33a6a3852d9ae..ed2b33147f99a08f6a97e7aef351090f6c4ae4cf 100644 (file)
@@ -1,3 +1,9 @@
+2005-09-29  Arnold Metselaar <arnold.metselaar@planet.nl>
+           Alan Modra  <amodra@bigpond.net.au>
+
+       * app.c (do_scrub_chars): Match open and close quote of strings.
+       Remove redundant EOF test in case 7.
+
 2005-09-28  Jan Beulich  <jbeulich@novell.com>
 
        * config/tc-i386.c (reloc): Disable signedness check for 4-byte
index d33089a10ad28fa18adc3269d9ed45a363378bb1..14f2f14b663dad26f68db883aca06f6b5eb8c5fa 100644 (file)
--- a/gas/app.c
+++ b/gas/app.c
@@ -345,6 +345,8 @@ do_scrub_chars (int (*get) (char *, int), char *tostart, int tolen)
   char *fromend;
   int fromlen;
   register int ch, ch2 = 0;
+  /* Character that started the string we're working on.  */
+  static char quotechar;
 
   /*State 0: beginning of normal line
          1: After first whitespace on line (flush more white)
@@ -536,11 +538,8 @@ do_scrub_chars (int (*get) (char *, int), char *tostart, int tolen)
            for (s = from; s < fromend; s++)
              {
                ch = *s;
-               /* This condition must be changed if the type of any
-                  other character can be LEX_IS_STRINGQUOTE.  */
                if (ch == '\\'
-                   || ch == '"'
-                   || ch == '\''
+                   || ch == quotechar
                    || ch == '\n')
                  break;
              }
@@ -558,12 +557,12 @@ do_scrub_chars (int (*get) (char *, int), char *tostart, int tolen)
          ch = GET ();
          if (ch == EOF)
            {
-             as_warn (_("end of file in string; inserted '\"'"));
+             as_warn (_("end of file in string; '%c' inserted"), quotechar);
              state = old_state;
              UNGET ('\n');
-             PUT ('"');
+             PUT (quotechar);
            }
-         else if (lex[ch] == LEX_IS_STRINGQUOTE)
+         else if (ch == quotechar)
            {
              state = old_state;
              PUT (ch);
@@ -603,8 +602,8 @@ do_scrub_chars (int (*get) (char *, int), char *tostart, int tolen)
              continue;
 
            case EOF:
-             as_warn (_("end of file in string; '\"' inserted"));
-             PUT ('"');
+             as_warn (_("end of file in string; '%c' inserted"), quotechar);
+             PUT (quotechar);
              continue;
 
            case '"':
@@ -638,10 +637,9 @@ do_scrub_chars (int (*get) (char *, int), char *tostart, int tolen)
 
        case 7:
          ch = GET ();
+         quotechar = ch;
          state = 5;
          old_state = 8;
-         if (ch == EOF)
-           goto fromeof;
          PUT (ch);
          continue;
 
@@ -975,6 +973,7 @@ do_scrub_chars (int (*get) (char *, int), char *tostart, int tolen)
          break;
 
        case LEX_IS_STRINGQUOTE:
+         quotechar = ch;
          if (state == 10)
            {
              /* Preserve the whitespace in foo "bar".  */