From 6550b9fbe810a91765a40d8a684ebf20c183c628 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 26 Jun 2006 20:20:11 +0000 Subject: Michael Troß writes: gen_wctype segfaults on my system when optimized with -O2. It does work without optimization, even -O1 does not cause the segfault. Problem is in newopt, at gen_wctype.c:865: memcpy(tbl->ti + i * blocksize, ti[uniqblock[i]], blocksize); MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The segfault is caused by the uninitialized variable uniqblock when newopt is called recursively. The attached patch fixes this. --- extra/locale/gen_wctype.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'extra') diff --git a/extra/locale/gen_wctype.c b/extra/locale/gen_wctype.c index c29c1b952..6db285e3a 100644 --- a/extra/locale/gen_wctype.c +++ b/extra/locale/gen_wctype.c @@ -785,6 +785,8 @@ size_t newopt(unsigned char *ut, size_t usize, int shift, table_data *tbl) unsigned char uit[RANGE+1]; int shift2; + memset(uniqblock, 0x00, sizeof(uniqblock)); + ii_save = NULL; blocksize = 1 << shift; numblocks = usize >> shift; -- cgit v1.2.3