load.R patch suggestion
Ben Bolker <bbolker at gmail.com>
on Thu, 15 Sep 2011 11:03:26 +0200 writes:
> Inspired by
> http://stackoverflow.com/questions/7487778/could-you-tell-me-what-this-error-means
> I wrote the following very small (one-line) patch which
> returns an *informative* error message when R tries to
> load a zero-byte file rather than
> Error in if (!grepl("RD[AX]2\n", magic)) { : argument is
> of length zero
> I would guess that error messages with the word "magic"
> in them would be disturbing to new users, who are probably
> worried already that R is magic ...
:-) indeed...
While it would not be a good idea to program around such error
messages in general, as each extra if(...) is executed everytime
the function is called, i.e. has a (albeit *very small*) penalty for
every correct call just for the sake of that message in the
erronous call case,
I do agree that it is worth here and so have added it (for
R-devel only).
Thank you, Ben.
> Ben Bolker
----------------------------------------------------------------------
Index: load.R
===================================================================
--- load.R (revision 56743)
+++ load.R (working copy)
@@ -25,6 +25,7 @@
## Since the connection is not open this opens it in binary mode
## and closes it again.
magic <- readChar(con, 5L, useBytes = TRUE)
+ if (length(magic)==0) stop("empty (zero-byte) file")
if (!grepl("RD[AX]2\n", magic)) {
## a check while we still know the call to load()
if(grepl("RD[ABX][12]\r", magic))
----------------------------------------------------------------------