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@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to