Two minor tweaks to unicode_repeat: * If the number of repeats (len) is < 1, we're always going to return the empty Unicode string. So I incr and return unicode_empty. * The current code has "if (done < nchars)" around the first copy. A little data-flow analysis of the code will show you that done is always 0 and nchars is always >= str->length. So the check is unnecessary--we're always going to do that first copy. I removed the if and set done to str->length directly. Hope I got it right!