On 12/28/2005 9:50 AM, Seth Falcon wrote:
> On 27 Dec 2005, [EMAIL PROTECTED] wrote:
> 
>>This is a bug in load, isn't it?  load() opens the connection but
>>doesn't close it.
> 
> 
> Well, it may be that load needs a small fix, but that doesn't fix
> anonymous connections in general, IMO.

No it doesn't.  However, I've committed the small fix.
> 
> The loop could easily have been:
> 
> for (i in 1:50) {
>     print(load(url(testUrl, open="r")))
> }
> 
> And it doesn't need to be related to url or load:
> 
> cat("a line of text\n", file="another-example.txt")
> z <- NULL
> for (i in 1:50) {
>     z <- c(z, readLines(file("another-example.txt", open="r")))
> }
> 
> Also, connections are "in use" even if they are closed:
> 
> for (i in 1:50) {
>     if (isOpen(file("another-example.txt")))
>         stop("you will not get here")
> }

I think the general problem is that R doesn't have references (or at 
least, they aren't in a final, documented state).  If the garbage 
collector closed a connection, then things would go wrong when there 
were two copies of it:  the second one would be messed up when the first 
was destroyed.  If we had references, then opening a connection could 
create a connection object and a reference to it; the connection object 
would remain as long as there were any references to it, and could be 
destroyed (and automatically closed) after the last reference was gone.

Duncan Murdoch

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

Reply via email to