EncodingConverter#primitive_convert clears the source buffer if exists.

https://github.com/ruby/ruby/blob/trunk/transcode.c#L3761.
Actually `ip` can be changed by `rb_econv_convert`, but I've tried several combinations and in the end it always clears the source string.
This fixes infinite looping in the active_support master test suite.