[Rd] Compiler + stopifnot bug
Tierney, Luke
luke-tierney @ending from uiow@@edu
Fri Jan 4 01:32:46 CET 2019
Thanks for the reports. Will look into it soon and report back.
Luke
Sent from my iPhone
> On Jan 3, 2019, at 2:15 PM, Martin Morgan <mtmorgan.bioc using gmail.com> wrote:
>
> 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
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list