diff options
author | Joe Mistachkin <joe@mistachkin.com> | 2014-11-11 22:23:34 (GMT) |
---|---|---|
committer | Joe Mistachkin <joe@mistachkin.com> | 2014-11-11 22:23:34 (GMT) |
commit | b15c525eedc93a453dfea94482bc1198e27748fc (patch) | |
tree | 49a88f59bc168351fe802d8aa68da6d853b823aa /generic/tkOption.c | |
parent | 07f85cd3c1b4934fb746ea36516ba2944b4eea11 (diff) | |
parent | ee9722cf78769c35f57383613f570b6e797e74bf (diff) | |
download | tk-b15c525eedc93a453dfea94482bc1198e27748fc.zip tk-b15c525eedc93a453dfea94482bc1198e27748fc.tar.gz tk-b15c525eedc93a453dfea94482bc1198e27748fc.tar.bz2 |
Merge updates from core 8.5 branch.
Diffstat (limited to 'generic/tkOption.c')
-rw-r--r-- | generic/tkOption.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/generic/tkOption.c b/generic/tkOption.c index de92627..91a6cc0 100644 --- a/generic/tkOption.c +++ b/generic/tkOption.c @@ -1019,14 +1019,25 @@ AddFromString( Tcl_SetResult(interp, buf, TCL_VOLATILE); return TCL_ERROR; } - if ((src[0] == '\\') && (src[1] == '\n')) { - src += 2; - lineNum++; - } else { - *dst = *src; - dst++; - src++; + if (*src == '\\'){ + if (src[1] == '\n') { + src += 2; + lineNum++; + continue; + } else if (src[1] == 'n') { + src += 2; + *dst++ = '\n'; + continue; + } else if (src[1] == '\t' || src[1] == ' ' || src[1] == '\\') { + ++src; + } else if (src[1] >= '0' && src[1] <= '3' && src[2] >= '0' && + src[2] <= '9' && src[3] >= '0' && src[3] <= '9') { + *dst++ = ((src[1]&7)<<6) | ((src[2]&7)<<3) | (src[3]&7); + src += 4; + continue; + } } + *dst++ = *src++; } *dst = 0; |