[Rd] Compiler + stopifnot bug
Martin Morgan
mtmorg@n@bioc @ending from gm@il@com
Fri Jan 4 01:13:02 CET 2019
For what it's worth this also introduced
> df = data.frame(v = package_version("1.2"))
> rbind(df, df)$v
[[1]]
[1] 1 2
[[2]]
[1] 1 2
instead of
> rbind(df, df)$v
[1] '1.2' '1.2'
which shows up in Travis builds of Bioconductor packages
https://stat.ethz.ch/pipermail/bioc-devel/2019-January/014506.html
and elsewhere
Martin Morgan
On 1/3/19, 7:05 PM, "R-devel on behalf of Duncan Murdoch" <r-devel-bounces using r-project.org on behalf of murdoch.duncan using gmail.com> wrote:
On 03/01/2019 3:37 p.m., Duncan Murdoch wrote:
> I see this too; by bisection, it seems to have first appeared in r72943.
Sorry, that was a typo. I meant r75943.
Duncan Murdoch
>
> Duncan Murdoch
>
> On 03/01/2019 2:18 p.m., Iñaki Ucar wrote:
>> Hi,
>>
>> I found the following issue in r-devel (2019-01-02 r75945):
>>
>> `foo<-` <- function(x, value) {
>> bar(x) <- value * x
>> x
>> }
>>
>> `bar<-` <- function(x, value) {
>> stopifnot(all(value / x == 1))
>> x + value
>> }
>>
>> `foo<-` <- compiler::cmpfun(`foo<-`)
>> `bar<-` <- compiler::cmpfun(`bar<-`)
>>
>> x <- c(2, 2)
>> foo(x) <- 1
>> x # should be c(4, 4)
>> #> [1] 3 3
>>
>> If the functions are not compiled or the stopifnot call is removed,
>> the snippet works correctly. So it seems that something is messing
>> around with the references to "value" when the call to stopifnot gets
>> compiled, and the wrong "value" is modified. Note also that if "x <-
>> 2", then the result is correct, 4.
>>
>> Regards,
>>
>
______________________________________________
R-devel using r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list