I think you are not looking at the whole documentation and/or code:
If GSUniShortOk is set, the function will return a buffer containing
any decoded characters even if the whole conversion fails.
This means that it will convert and return as many characters as it
can (if you specify the GSUniShortOk option).
What it doesn't currently do is return the number of
converted/remaining characters in the source, only the number of
bytes
produced in the destination, which is why I'm saying we should just
modify it to return the number of source characters not converted.
This seems to me a very minor (and logical) extension of existing
code.