--- gawk-3.1.8/builtin.c 2010-04-27 21:24:36.000000000 +0200 +++ gawk-3.1.8-patched/builtin.c 2010-05-17 23:44:30.000000000 +0200 @@ -1225,18 +1225,8 @@ if (fw == 0 && ! have_prec) ; else if (gawk_mb_cur_max > 1 && (cs1 == 's' || cs1 == 'c')) { - int nchars_needed = 0; - assert(cp == arg->stptr || cp == cpbuf); - - if (cs1 == 'c') - nchars_needed = 1; - else if (have_prec) - nchars_needed = prec; - else - nchars_needed = arg->stlen; - - copy_count = mbc_byte_count(arg->stptr, nchars_needed); + copy_count = mbc_byte_count(arg->stptr, prec); } bchunk(cp, copy_count); while (fw > prec) {