Mark.Bravington at csiro.au
2009-Mar-12 20:45 UTC
[Rd] installed.packages and package info cache buglet (PR#13592)
Looks like there is a buglet in 'installed.packages', around line 17:
for (lib in lib.loc) {
dest <- file.path(tempdir(), paste("libloc_",
URLencode(lib,=20
TRUE), paste(fields, collapse =3D ","), ".rds",
sep =3D ""))
if (!noCache && file.exists(dest) &&
file.info(dest)$mtime >=20
file.info(lib.loc)$mtime) {
^^^^^^^
=20
The 'lib.loc' should be 'lib', otherwise the comparison is
always against the first library in 'lib.loc', not against the one being
checked. [Normally the multiple test in '>' would flag a warning from
'if', but the &&s mean that only the first element is used.]
I can't provide a reproducible example for this, because it's so
installation-dependent.
Still present in R-devel from 8th March.
Mark Bravington
CSIRO
Hobart
Australia
--please do not edit the information below--
Version:
platform =3D i386-pc-mingw32
arch =3D i386
os =3D mingw32
system =3D i386, mingw32
status =3D Patched
major =3D 2
minor =3D 8.1
year =3D 2009
month =3D 02
day =3D 12
svn rev =3D 47919
language =3D R
version.string =3D R version 2.8.1 Patched (2009-02-12 r47919)
Windows XP (build 2600) Service Pack 2
Locale:
LC_COLLATE=3DEnglish_Australia.1252;LC_CTYPE=3DEnglish_Australia.1252;LC_MONETARY=3DEnglish_Australia.1252;LC_NUMERIC=3DC;LC_TIME=3DEnglish_Australia.1252
Search Path:
.GlobalEnv, package:grDevices, package:ad, package:chstuff, package:handy2,
package:tweedie, package:statmod, package:handy, package:debug,
package:mvbutils, mvb.session.info, package:tools, package:tcltk, package:boot,
package:stats, package:graphics, package:utils, package:methods, Autoloads,
package:base
maechler at stat.math.ethz.ch
2009-Mar-13 21:25 UTC
[Rd] installed.packages and package info cache buglet (PR#13592)
>>>>> Mark Bravington <Mark.Bravington at csiro.au> >>>>> on Thu, 12 Mar 2009 21:45:18 +0100 (CET) writes:>> Looks like there is a buglet in 'installed.packages', around line 17: >> >> for (lib in lib.loc) { >> dest <- file.path(tempdir(), paste("libloc_", URLencode(lib,=20 >> TRUE), paste(fields, collapse =3D ","), ".rds", sep =3D "")) >> if (!noCache && file.exists(dest) && file.info(dest)$mtime >=20 >> file.info(lib.loc)$mtime) { >> >> ^^^^^^^ >> =20 >> The 'lib.loc' should be 'lib', otherwise the comparison is always against t>> he first library in 'lib.loc', not against the one being checked. [Normally>> the multiple test in '>' would flag a warning from 'if', but the &&s mean >> that only the first element is used.] >> >> I can't provide a reproducible example for this, because it's so installati>> on-dependent. >> >> Still present in R-devel from 8th March.and today. Thank you, Mark, I've corrected it (in R-devel only). Martin Maechler, ETH Zurich>> Mark Bravington >> CSIRO >> Hobart >> Australia