Gábor Csárdi
2018-Apr-10 21:27 UTC
[Rd] possible bug: stderr() connection truncates output at 8191 characters when R_Consolefile is not used
This is recent R-devel, but AFAICT all R versions are affected. Also AFAICT, currently only happens on macOS with Aqua, and on Windows, unless you are in RTerm. These do not use R_Consolefile Code to reproduce: x <- paste0(strrep(".", 8191), "MIA") nchar(x) #> [1] 8194 ## This is fine: cat(x, file = stdout()) ## This truncates silently: cat(x, file = stderr()) It happens because the vfprintf callback of stderr() is stderr_vfprintf [1], and that just calls REvprintf [2], which truncates at 8191 characters [3], if R_Consolefile is not used. [1] https://github.com/wch/r-source/blob/fed0444824567e1c4edff234fc5c2fb1c99bbc84/src/main/connections.c#L5122 [2] https://github.com/wch/r-source/blob/fed0444824567e1c4edff234fc5c2fb1c99bbc84/src/main/connections.c#L2562 [3] https://github.com/wch/r-source/blob/fed0444824567e1c4edff234fc5c2fb1c99bbc84/src/main/printutils.c#L972