From f85ce201eec611712960fa1886f545bfac6f006a Mon Sep 17 00:00:00 2001 From: axel Date: Tue, 10 Oct 2006 01:19:13 +1000 Subject: [PATCH] Do not use INTERNAL_SEPARATOR tokens to separate different parts of an unescaped string when unescape_special is false. This fixes a bug where weird characters would sometimes be printed in completion descriptions darcs-hash:20061009151913-ac50b-47a9d3274b2399cef6fd0e12a908a606da2c4903.gz --- common.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/common.c b/common.c index c0d43ceff..34d64f930 100644 --- a/common.c +++ b/common.c @@ -1015,7 +1015,8 @@ wchar_t *unescape( const wchar_t * orig, int unescape_special ) default: { - in[out_pos++] = INTERNAL_SEPARATOR; + if( unescape_special ) + in[out_pos++] = INTERNAL_SEPARATOR; in[out_pos]=in[in_pos]; break; } @@ -1140,14 +1141,16 @@ wchar_t *unescape( const wchar_t * orig, int unescape_special ) case L'\'': { mode = 1; - in[out_pos] = INTERNAL_SEPARATOR; + if( unescape_special ) + in[out_pos] = INTERNAL_SEPARATOR; break; } case L'\"': { mode = 2; - in[out_pos] = INTERNAL_SEPARATOR; + if( unescape_special ) + in[out_pos] = INTERNAL_SEPARATOR; break; } @@ -1194,7 +1197,8 @@ wchar_t *unescape( const wchar_t * orig, int unescape_special ) } if( c == L'\'' ) { - in[out_pos] = INTERNAL_SEPARATOR; + if( unescape_special ) + in[out_pos] = INTERNAL_SEPARATOR; mode = 0; } else @@ -1215,7 +1219,8 @@ wchar_t *unescape( const wchar_t * orig, int unescape_special ) case '"': { mode = 0; - in[out_pos] = INTERNAL_SEPARATOR; + if( unescape_special ) + in[out_pos] = INTERNAL_SEPARATOR; break; }