[Rd] Buffering in R 3.5 connections causes incorrect data in readChar
Tomas Kalibera
tom@@@k@liber@ @ending from gm@il@com
Tue May 29 12:09:00 CEST 2018
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 using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list