diff --git a/src/cpp.c b/src/cpp.c
index 16efd5e53b8511945ffd4faf85a643bc92623a1f..43f6d312d0b63b48895c86584721a2c34edb9ece 100644
--- a/src/cpp.c
+++ b/src/cpp.c
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: cpp.c,v 1.63 2000/05/11 14:09:45 grubba Exp $
+ * $Id: cpp.c,v 1.64 2000/06/06 22:51:55 hubbe Exp $
  */
 #include "global.h"
 #include "stralloc.h"
@@ -340,6 +340,11 @@ while(1)					\
       pos++;					\
       continue;					\
     }						\
+    if(data[pos+1]=='\r' && data[pos+2]=='\n')	\
+    {						\
+      pos+=2;					\
+      continue;					\
+    }						\
     READCHAR(tmp);				\
     string_builder_putchar(&nf, tmp);		\
     continue;					\
@@ -382,6 +387,13 @@ while(1)						\
       this->current_line++;				\
       continue;						\
     }							\
+    if(data[pos]=='\r' && data[pos+1]=='\n')		\
+    {							\
+      pos+=2;						\
+      trailing_newlines++;				\
+      this->current_line++;				\
+      continue;						\
+    }							\
     if(outp) string_builder_putchar(&nf, '\\');	        \
     pos++;                                              \
 							\
diff --git a/src/testsuite.in b/src/testsuite.in
index f6b1ce1fc8f9fe4e532a31b16bfe7aead79bd020..4546277052d001f83273f095729184a0e19a30d9 100644
--- a/src/testsuite.in
+++ b/src/testsuite.in
@@ -1,4 +1,4 @@
-test_true([["$Id: testsuite.in,v 1.296 2000/05/25 17:20:58 grubba Exp $"]]);
+test_true([["$Id: testsuite.in,v 1.297 2000/06/06 22:51:55 hubbe Exp $"]]);
 
 cond([[all_constants()->_verify_internals]],
 [[
@@ -2964,6 +2964,24 @@ test_any([[
 return FOOa(2);
 ]],2)
 
+test_any([[
+#define FOOa(X) \
+(X)
+return FOOa(3);
+]],3)
+
+test_any([[
+#define FOOa(X) "bar\
+gazonk"
+return FOOa(3);
+]],"bargazonk")
+
+test_any([[
+#define FOOa(X) "bar\
+gazonk"
+return FOOa(3);
+]],"bargazonk")
+
 
 // /* */
 test_any([[