The issue with the skip code was not the limit to 64K, but how the
code
(a) assumed the wrong type for the result of 'read' (number of bytes,
    but is the read data), and
(b) mis-handled short reads.

Using 'string length' to convert the result type into what was needed,
and using the proper condition was what fixed the issue, and not
getting rid of the limit.

I have now re-instated the limit, with in-code explanation of why it
makes sense, and verified that this still passes the testsuite.

I further changed the variable names to be much more self-documenting
as well.