]> oss.titaniummirror.com Git - msp430-binutils.git/blobdiff - gas/input-scrub.c
Merge commit 'upstream/2.20'
[msp430-binutils.git] / gas / input-scrub.c
index 21a46514545cb2695dd10d4a27c641c0e24d3080..a2cd31b3f6e4114dd54a8f533109fc5a9fe10d44 100644 (file)
@@ -1,6 +1,6 @@
 /* input_scrub.c - Break up input buffers into whole numbers of lines.
    Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-   2000, 2001, 2003, 2006, 2007
+   2000, 2001, 2003, 2005, 2006, 2007, 2008
    Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
@@ -165,7 +165,8 @@ input_scrub_push (char *saved_position)
   buffer_length = input_file_buffer_size ();
   sb_index = -1;
 
-  buffer_start = xmalloc ((BEFORE_SIZE + buffer_length + buffer_length + AFTER_SIZE));
+  buffer_start = (char *) xmalloc ((BEFORE_SIZE + buffer_length
+                                    + buffer_length + AFTER_SIZE));
   memcpy (buffer_start, BEFORE_STRING, (int) BEFORE_SIZE);
 
   return saved;
@@ -209,7 +210,8 @@ input_scrub_begin (void)
 
   buffer_length = input_file_buffer_size ();
 
-  buffer_start = xmalloc ((BEFORE_SIZE + buffer_length + buffer_length + AFTER_SIZE));
+  buffer_start = (char *) xmalloc ((BEFORE_SIZE + buffer_length
+                                    + buffer_length + AFTER_SIZE));
   memcpy (buffer_start, BEFORE_STRING, (int) BEFORE_SIZE);
 
   /* Line number things.  */
@@ -283,6 +285,12 @@ input_scrub_include_sb (sb *from, char *position, int is_expansion)
       sb_add_char (&from_sb, '\n');
     }
   sb_scrub_and_add_sb (&from_sb, from);
+
+  /* Make sure the parser looks at defined contents when it scans for
+     e.g. end-of-line at the end of a macro.  */
+  sb_add_char (&from_sb, 0);
+  from_sb.len--;
+
   sb_index = 1;
 
   /* These variables are reset by input_scrub_push.  Restore them
@@ -357,10 +365,10 @@ input_scrub_next_buffer (char **bufp)
 
          limoff = limit - buffer_start;
          buffer_length += input_file_buffer_size ();
-         buffer_start = xrealloc (buffer_start,
-                                  (BEFORE_SIZE
-                                   + 2 * buffer_length
-                                   + AFTER_SIZE));
+         buffer_start = (char *) xrealloc (buffer_start,
+                                            (BEFORE_SIZE
+                                             + 2 * buffer_length
+                                             + AFTER_SIZE));
          *bufp = buffer_start + BEFORE_SIZE;
          limit = input_file_give_next_buffer (buffer_start + limoff);