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]