That code was a joke, letting some invalid utf8 bytes pass, returning wrong offset for some invalid sequences, not to mention length and pointer easily going out of sync, NULL final byte being 'forgotten' by memcpy, etc. etc. The miracle here is that we could survive using this for so long! Probably because we do not use utf-8 sanitizing enough in Blender, actually... :/