[Rd] [External] Bug in out-of-bounds assignment of list object to expression() vector

iuke-tier@ey m@iii@g oii uiow@@edu iuke-tier@ey m@iii@g oii uiow@@edu
Sat Apr 6 01:04:01 CEST 2024


Thanks for the report. Fixed in R-devel and R-patched (both
R-4-4-branch and R-4-3-branch).

On Fri, 5 Apr 2024, June Choe wrote:

> [You don't often get email from jchoe001 using gmail.com. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
>
> There seems to be a bug in out-of-bounds assignment of list objects to an
> expression() vector. Tested on release and devel. (Many thanks to folks
> over at Mastodon for the help narrowing down this bug)
>
> When assigning a list into an existing index, it correctly errors on
> incompatible type, and the expression vector is unchanged:
>
> ```
> x <- expression(a,b,c)
> x[[3]] <- list() # Error
> x
> #> expression(a, b, c)
> ```
>
> When assigning a list to an out of bounds index (ex: the next, n+1 index),
> it errors the same but now changes the values of the vector to NULL:
>
> ```
> x <- expression(a,b,c)
> x[[4]] <- list() # Error
> x
> #> expression(NULL, NULL, NULL)
> ```
>
> Curiously, this behavior disappears if a prior attempt is made at assigning
> to the same index, using a different incompatible object that does not
> share this bug (like a function):
>
> ```
> x <- expression(a,b,c)
> x[[4]] <- base::sum # Error
> x[[4]] <- list() # Error
> x
> #> expression(a, b, c)
> ```
>
> That "protection" persists until x[[4]] is evaluated, at which point the
> bug can be produced again:
>
> ```
> x[[4]] # Error
> x[[4]] <- list() # Error
> x
> #> expression(NULL, NULL, NULL)
> ```
>
> Note that `x` has remained a 3-length vector throughout.
>
> Best,
> June
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> 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/



More information about the R-devel mailing list