From 6cb5be7813d4f7e9380929f900a6cbbb0e6756c6 Mon Sep 17 00:00:00 2001
From: Eli Zaretskii <eliz@gnu.org>
Date: Sat, 1 Sep 2012 07:52:54 +0000
Subject: [PATCH] Fix unescape_char when not unescaping.

 read.c (unescape_char): Advance 'p' after copying the unescaped
 characters.  Otherwise the backslashes are incorrectly erased from
 the original string.
---
 ChangeLog | 6 ++++++
 read.c    | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 5e5e237e..99e75bc6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-09-01  Eli Zaretskii  <eliz@gnu.org>
+
+	* read.c (unescape_char): Advance 'p' after copying the unescaped
+	characters.  Otherwise the backslashes are incorrectly erased from
+	the original string.
+
 2012-03-05  Paul Smith  <psmith@gnu.org>
 
 	Update copyright notices to use year ranges, as allowed by
diff --git a/read.c b/read.c
index 33bf1195..f075ef50 100644
--- a/read.c
+++ b/read.c
@@ -2242,9 +2242,9 @@ unescape_char (char *string, int c)
               /* It is, and there's >1 backslash.  Take half of them.  */
               l /= 2;
               memcpy (p, s, l);
-              p += l;
             }
           s = e;
+          p += l;
         }
 
       *(p++) = *(s++);