Fix handling of control characters.
Since we're using `char*` now, chars > 127 are represented as negative numbers.
Thank you `git bisect`!