lionel- · GitHub

@hadley

lionel-

approved these changes Sep 1, 2022

DavisVaughan

@hadley

hadley marked this pull request as ready for review

September 13, 2022 16:19

@hadley

DavisVaughan

@hadley

@hadley

Closed

DavisVaughan added a commit that referenced this pull request

Mar 20, 2026
Bug introduced in #6444 where `caller` was removed from the DataMask's private environment, not realizing that we referenced it in the C code.
Switching to `env_get()` here revealed the bug, since it errors on unbound values.
This did not cause us any problems before because we always passed a quosure to `rlang::eval_tidy()`, which immediately overwrites the `env` argument with the quosure's environment, so it overwrote our faulty `R_UnboundValue` input. I have now encoded this assumption up front with `check_quosure()`.

Merged

DavisVaughan added a commit that referenced this pull request

Apr 1, 2026
* Do 1:1 replacement of `Rf_findVarInFrame()` with `env_get()`
* Use `R_removeVarFromFrame()` not `rlang::env_unbind()`. Closes #7818.
* Remove unused `quo_get_expr()` C callable import
* Remove broken reliance on a `caller` environment that didn't exist!
Bug introduced in #6444 where `caller` was removed from the DataMask's private environment, not realizing that we referenced it in the C code.
Switching to `env_get()` here revealed the bug, since it errors on unbound values.
This did not cause us any problems before because we always passed a quosure to `rlang::eval_tidy()`, which immediately overwrites the `env` argument with the quosure's environment, so it overwrote our faulty `R_UnboundValue` input. I have now encoded this assumption up front with `check_quosure()`.
* Check for "used" bindings with new `R_GetBindingType()` API
* Use new `R_MakeDelayedBinding()` to remove non-API promise utilities
* We want `inherits = FALSE` in `R_getVar()`
To match `Rf_findVarInFrame3()`
* Remove stray include
* NEWS bullet
* Use `rlang_is_quosure` callable

Read the original on github.com ↗