Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: 3.1.6-pws-6: $compstate[unambiguous] could be garbage
- X-seq: zsh-workers 8151
- From: "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx
- Subject: PATCH: 3.1.6-pws-6: $compstate[unambiguous] could be garbage
- Date: Thu, 7 Oct 1999 10:40:18 +0000
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
Earlier today I started noticing
_main_complete: 95: bad set of key/value pairs for associative array
Line 95 is copying the entire $compstate assoc int $lastcomp. I eventually
tracked the problem to the value of `unambiguous' which it seemed was being
dropped from the ${(@kv)compstate} expansion. Turns out the reason it was
being dropped is that it pointed to a garbage string because unambig_data()
was being called twice and was freeing and reallocating the cached value
each time; the string returned the first time ended up pointing into free
memory.
I don't know whether the `|| !ainfo' is necessary in the patch below, but
it seemed safest to have it there. It was always nonzero in the bug case,
but I didn't go through every possible call to the function.
Index: Src/Zle/zle_tricky.c
===================================================================
@@ -7963,7 +7963,7 @@
scache = cline_str((ainfo->count ? ainfo->line : fainfo->line),
0, &ccache);
}
- } else {
+ } else if (mnum != unambig_mnum || !ainfo || !scache) {
zsfree(scache);
scache = ztrdup("");
ccache = 0;
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Messages sorted by:
Reverse Date,
Date,
Thread,
Author