Fix unescape_char when not unescaping.
authorEli Zaretskii <eliz@gnu.org>
Sat, 1 Sep 2012 07:52:54 +0000 (07:52 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sat, 1 Sep 2012 07:52:54 +0000 (07:52 +0000)
 read.c (unescape_char): Advance 'p' after copying the unescaped
 characters.  Otherwise the backslashes are incorrectly erased from
 the original string.

ChangeLog
read.c

index 5e5e237..99e75bc 100644 (file)
--- 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 33bf119..f075ef5 100644 (file)
--- 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++);