Description: Fixes by ZeroC, Inc.
Author: ZeroC, Inc.
Bug-Debian: http://bugs.debian.org/611749

--- mcpp-2.7.2.orig/src/main.c
+++ mcpp-2.7.2/src/main.c
@@ -326,6 +326,8 @@ static void     init_main( void)
             = FALSE;
     option_flags.trig = TRIGRAPHS_INIT;
     option_flags.dig = DIGRAPHS_INIT;
+    sh_file = NULL;
+    sh_line = 0;
 }
 
 int     mcpp_lib_main
--- mcpp-2.7.2.orig/src/support.c
+++ mcpp-2.7.2/src/support.c
@@ -188,7 +188,7 @@ static char *   append_to_buffer(
     size_t      length
 )
 {
-    if (mem_buf_p->bytes_avail < length) {  /* Need to allocate more memory */
+    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,6 +1722,8 @@ com_start:
                     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        */
--- mcpp-2.7.2.orig/src/internal.H
+++ mcpp-2.7.2/src/internal.H
@@ -390,6 +390,8 @@ extern char * const     work_end;   /* E
 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,6 +559,6 @@ extern void     init_system( void);
 #endif
 #endif
 
-#if HOST_HAVE_STPCPY
+#if HOST_HAVE_STPCPY && !defined(stpcpy)
 extern char *   stpcpy( char * dest, const char * src);
 #endif
--- mcpp-2.7.2.orig/src/system.c
+++ mcpp-2.7.2/src/system.c
@@ -3858,6 +3858,9 @@ static int  chk_dirp(
 }
 #endif
 
+FILEINFO*       sh_file;
+int             sh_line;
+
 void    sharp(
     FILEINFO *  sharp_file,
     int         flag        /* Flag to append to the line for GCC   */
@@ -3868,8 +3871,6 @@ void    sharp(
  * else (i.e. 'sharp_file' is NULL) 'infile'.
  */
 {
-    static FILEINFO *   sh_file;
-    static int  sh_line;
     FILEINFO *  file;
     int         line;
 
