From @@ronjgoodm@n @ending from gm@il@com  Wed May 30 00:00:38 2018
From: @@ronjgoodm@n @ending from gm@il@com (Aaron Goodman)
Date: Tue, 29 May 2018 15:00:38 -0700
Subject: [Rd] Buffering in R 3.5 connections causes incorrect data in
 readChar
In-Reply-To: <9d63bec8-b5c0-1099-7d47-0b2dd1aeb352@gmail.com>
References: <CAJvXDNbV+oH_SQPOBP=4S_NiuFZ=0E6ZyzTNKEALz5t7VxfTJA@mail.gmail.com>
 <9d63bec8-b5c0-1099-7d47-0b2dd1aeb352@gmail.com>
Message-ID: <CAJvXDNaBtR9+1uLDyLwm1t5XeuHo6BT6EbJCWy9X486TMghHpg@mail.gmail.com>

Tomas,

Thank you for the explanation. I see in the documentation: "These functions
are intended to be used with binary-mode connections."  So I see how using
it on a text connection is undefined, and not a bug. An error or warning
when attempting to use a it on a text connection would be helpful
considering how the behavior has changed in R-3.5.

On Tue, May 29, 2018 at 3:09 AM, Tomas Kalibera <tomas.kalibera at gmail.com>
wrote:

> On 05/26/2018 05:15 AM, Aaron Goodman wrote:
>
>> I noticed an issue where readChar does not return the correct value after
>> a
>> call to readline. It appears that readChar is not aware of the buffering,
>> so it reads from the end of the buffer, rather than the current position
>> in
>> the file. This is a significant change of behavior from R-3.4.4.
>>
>> Below is a test case that I used to home in on the problem.
>>
> Thanks for the report and analysis, you are right, readChar ignores the
> buffer (and it also ignores the pushback). But please note that this
> behavior is in line with the documentation, see ?readChar: readChar must
> only be used with binary connections, but the example uses it on a text
> connection. Buffering and pushback are only used on (readable) text
> connections. I will check whether we could report a runtime error.
>
> Best
> Tomas
>
> ---
>>
>> p<-"test2.txt"
>> cat("abcdefg
>> hijklmn
>> opqrstu",file=p)
>>
>> cat("read char after readline (h)\n")
>> con <- file(p,"r")
>> invisible(readLines(con,1))
>> print(readChar(con,1))
>> close(con)
>>
>> cat("read char after readline and seek (h)\n")
>> con <- file(p,"r")
>> invisible(readLines(con,1))
>> invisible(seek(con,seek(con)))
>> print(readChar(con,1))
>> close(con)
>>
>> cat("read lines after readline (hijklmn)\n")
>> con <- file(p,"r")
>> invisible(readLines(con,1) )
>> print(readLines(con,1))
>> close(con)
>>
>>
>> cat("read line after char (bcdefg):\n")
>> con <- file(p,"r")
>> invisible(readChar(con,1) )
>> print(readLines(con,1))
>> close(con)
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>
>
>

	[[alternative HTML version deleted]]



[Rd] Buffering in R 3.5 connections causes incorrect data in readChar
Aaron Goodman