Here's a backtrace showing where the extra characters get lost during an
expand operation (touch a$'\300' and then cat a*<TAB>)

#0  stringaszleline (instr=0x100e0850 "cat a\300", incs=6, outll=0xfc97658,
    outsz=0xfc97890, outcs=0xfc97684) at zle_utils.c:244
#1  0x0fc70224 in unmetafy_line () at zle_tricky.c:979
#2  0x0fc74ac0 in docomplete (lst=3) at zle_tricky.c:870
#3  0x0fc7697c in expandorcompleteprefix (args=0x100e0850) at zle_tricky.c:2742
#4  0x0fc60870 in execzlefunc (func=0xfc94990, args=0xfc97614,
    set_bindk=264861272) at zle_main.c:1261
#5  0x0fc60dbc in zlecore () at zle_main.c:1019
#6  0x0fc614cc in zleread (lp=<value optimized out>, rp=<value optimized out>,
    flags=<value optimized out>, context=<value optimized out>)
    at zle_main.c:1174
#7  0x1003df68 in inputline () at input.c:278
#8  0x1003e970 in ingetc () at input.c:214
#9  0x1003813c in ihgetc () at hist.c:240
#10 0x1004a70c in yylex () at lex.c:646
#11 0x100709d8 in parse_event () at parse.c:451
#12 0x1003c73c in loop (toplevel=1, justonce=0) at init.c:129
#13 0x1003d8cc in zsh_main (argc=<value optimized out>,
    argv=<value optimized out>) at init.c:1347
#14 0x1000b410 in main (argc=269355088, argv=0x6) at ./main.c:93

stringaszleline() gets an MB_INVALID from mbrtowc and doesn't handle it well.

When doing completion instead of expanding, the string gets generated by
add_match_data, which handles MB_INVALID by generating the $'\300'
replacement string. Maybe stringaszleline should be doing that too.

-- 
Alan Curry
[EMAIL PROTECTED]


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to