aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parse.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/parse.c b/parse.c
index b614843..62108a2 100644
--- a/parse.c
+++ b/parse.c
@@ -58,24 +58,26 @@ static String decodestring(char *s) {
s++;
if (*s >= '0' && *s <= '7') {
c = strtoul(s, &end, 8);
- s += 3;
+ s += 2;
} else if (*s == 'x') {
s++;
c = strtoul(s, &end, 16);
- s = end;
+ s = end-1;
} else if (*s == 'r') {
c = '\r';
} else if (*s == 'n') {
c = '\n';
} else if (*s == 't') {
c = '\t';
+ } else if (*s == '\\'){
+ c = '\\';
} else {
unreachable();
}
} else {
c = *s;
- s++;
}
+ s++;
if (len == cap) {
cap = cap ? len * 2 : 8;
data = realloc(data, cap);