daily update
[deliverable/binutils-gdb.git] / gas / input-scrub.c
index 46dd244a9814ed53de4ee7b34c4726f6f7791930..adae4d4dcd004b3ff0abaca61f80dcf247989547 100644 (file)
@@ -264,6 +264,8 @@ input_scrub_include_file (char *filename, char *position)
 void
 input_scrub_include_sb (sb *from, char *position, int is_expansion)
 {
+  int newline;
+
   if (macro_nest > max_macro_nest)
     as_fatal (_("macros nested too deeply"));
   ++macro_nest;
@@ -277,9 +279,11 @@ input_scrub_include_sb (sb *from, char *position, int is_expansion)
 
   next_saved_file = input_scrub_push (position);
 
-  sb_new (&from_sb);
+  /* Allocate sufficient space: from->len + optional newline.  */
+  newline = from->len >= 1 && from->ptr[0] != '\n';
+  sb_build (&from_sb, from->len + newline);
   from_sb_is_expansion = is_expansion;
-  if (from->len >= 1 && from->ptr[0] != '\n')
+  if (newline)
     {
       /* Add the sentinel required by read.c.  */
       sb_add_char (&from_sb, '\n');
@@ -288,8 +292,7 @@ input_scrub_include_sb (sb *from, char *position, int is_expansion)
 
   /* 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_terminate (&from_sb);
 
   sb_index = 1;
 
This page took 0.024171 seconds and 4 git commands to generate.