diff -c -r -N ../mcpp-2.7.2/src/internal.H ./src/internal.H
*** ../mcpp-2.7.2/src/internal.H	2008-08-27 10:31:16.000000000 -0230
--- ./src/internal.H	2009-12-17 21:01:35.000000000 -0330
***************
*** 390,395 ****
--- 390,397 ----
  extern char     identifier[];       /* Lastly scanned name          */
  extern IFINFO   ifstack[];          /* Information of #if nesting   */
  extern char     work_buf[];
+ extern FILEINFO * sh_file;
+ extern int      sh_line;
          /* Temporary buffer for directive line and macro expansion  */
  
  /* main.c   */
***************
*** 557,562 ****
  #endif
  #endif
  
! #if HOST_HAVE_STPCPY
  extern char *   stpcpy( char * dest, const char * src);
  #endif
--- 559,564 ----
  #endif
  #endif
  
! #if HOST_HAVE_STPCPY && !defined(stpcpy)
  extern char *   stpcpy( char * dest, const char * src);
  #endif
diff -c -r -N ../mcpp-2.7.2/src/main.c ./src/main.c
*** ../mcpp-2.7.2/src/main.c	2008-11-05 05:04:46.000000000 -0330
--- ./src/main.c	2009-12-17 20:42:42.000000000 -0330
***************
*** 326,331 ****
--- 326,333 ----
              = FALSE;
      option_flags.trig = TRIGRAPHS_INIT;
      option_flags.dig = DIGRAPHS_INIT;
+     sh_file = NULL;
+     sh_line = 0;
  }
  
  int     mcpp_lib_main
diff -c -r -N ../mcpp-2.7.2/src/support.c ./src/support.c
*** ../mcpp-2.7.2/src/support.c	2008-06-10 06:02:33.000000000 -0230
--- ./src/support.c	2009-12-17 20:42:39.000000000 -0330
***************
*** 188,194 ****
      size_t      length
  )
  {
!     if (mem_buf_p->bytes_avail < length) {  /* Need to allocate more memory */
          size_t size = MAX( BUF_INCR_SIZE, length);
  
          if (mem_buf_p->buffer == NULL) {            /* 1st append   */
--- 188,194 ----
      size_t      length
  )
  {
!     if (mem_buf_p->bytes_avail < length + 1) {  /* Need to allocate more memory */
          size_t size = MAX( BUF_INCR_SIZE, length);
  
          if (mem_buf_p->buffer == NULL) {            /* 1st append   */
***************
*** 1722,1727 ****
--- 1722,1729 ----
                      sp -= 2;
                      while (*sp != '\n')     /* Until end of line    */
                          mcpp_fputc( *sp++, OUT);
+                     mcpp_fputc( '\n', OUT);
+                     wrong_line = TRUE;
                  }
                  goto  end_line;
              default:                        /* Not a comment        */
diff -c -r -N ../mcpp-2.7.2/src/system.c ./src/system.c
*** ../mcpp-2.7.2/src/system.c	2008-11-26 06:23:51.000000000 -0330
--- ./src/system.c	2009-12-17 20:42:42.000000000 -0330
***************
*** 3858,3863 ****
--- 3858,3866 ----
  }
  #endif
  
+ FILEINFO*       sh_file;
+ int             sh_line;
+ 
  void    sharp(
      FILEINFO *  sharp_file,
      int         flag        /* Flag to append to the line for GCC   */
***************
*** 3868,3875 ****
   * else (i.e. 'sharp_file' is NULL) 'infile'.
   */
  {
-     static FILEINFO *   sh_file;
-     static int  sh_line;
      FILEINFO *  file;
      int         line;
  
--- 3871,3876 ----