But much simpler (and less likely to be buggy) than even that is:
Didn't I already demonstrate that it's quite buggy? (Ok, so you're relying on the fact that manipulating the internal buffer of the scalar works in this situation even though you're not allowed to do it. As far as I'm concerned, you can't call simple something that relies on this level of knowledge of internals.)
If the first 4 arguments are for specifying ways to output 2 strings, then you can get simpler than that!
Really? Cause I would need to perform some testing to verify that it's correct. All that magic is far far more complicated than just returning the values.