Well, we shouldn't, I think. Like this https://github.com/rubinius/rubinius/blob/a46dcf9b9e5fb3cee664500c2649ef590681b590/vm/capi/string.cpp#L398, StringValue mutates the argument itself.