On 11-12-29 4:37 PM, Duncan Murdoch wrote:
On 11-12-29 9:49 AM, Henrik Bengtsson wrote:
I get the following with R v2.14.1 patched on Windows 7:

% Rterm --vanilla --silent

sessionInfo()
R version 2.14.1 Patched (2011-12-26 r58001)
Platform: x86_64-pc-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

readline(sprintf("%-*s:", 180, "A prompt"))
A prompt

                                          :
[1] ""
q("no")
Error: caught access violation - continue with care

It is a consistent behavior.

I can reproduce this, but I can't spot where the problem is.  I/O in
Rterm is very complicated, because we use a getline library that
implements line editing, and we run the I/O in a thread so that graphics
windows can be updated while waiting for input.

Presumably the problem is the long prompt causing a buffer overflow
somewhere, and a workaround is to use a more reasonable length of
prompt, but I don't think I'm going to be able to offer a real fix.  I'd
guess this bug is local to Rterm in Windows, but we don't really have
good tools there to detect buffer overflows.

Just had another idea, and found the problem - a buffer overflow in getline. I'll fix it.

Duncan Murdoch

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

Reply via email to