[Rd] Compiler + stopifnot bug

Iñaki Ucar iuc@r @ending from fedor@project@org
Fri Jan 4 11:54:47 CET 2019


I confirm it is fixed in r75946. Thanks.

Iñaki

On Fri, 4 Jan 2019 at 09:27, Tierney, Luke <luke-tierney using uiowa.edu> wrote:
>
> Should be fixed in r75946.
>
> Best,
>
> luke
>
> On Fri, 4 Jan 2019, Tierney, Luke wrote:
>
> > 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
> > ______________________________________________
> > R-devel using r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
>
> --
> Luke Tierney
> Ralph E. Wareham Professor of Mathematical Sciences
> University of Iowa                  Phone:             319-335-3386
> Department of Statistics and        Fax:               319-335-3017
>     Actuarial Science
> 241 Schaeffer Hall                  email:   luke-tierney using uiowa.edu
> Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



-- 
Iñaki Úcar



More information about the R-devel mailing list