Skip to content

Commit 7b2e0d9

Browse files
committed
Avoid r_env_find() in r_ns_env()
1 parent ddc8a68 commit 7b2e0d9

File tree

1 file changed

+6
-24
lines changed

1 file changed

+6
-24
lines changed

src/rlang/env.c

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,19 @@ r_obj* rlang_ns_env;
66

77

88
r_obj* r_ns_env(const char* pkg) {
9-
r_obj* ns = r_env_find(R_NamespaceRegistry, r_sym(pkg));
10-
if (ns == r_syms.unbound) {
9+
r_obj* pkg_sym = r_sym(pkg);
10+
if (!r_env_has(R_NamespaceRegistry, pkg_sym)) {
1111
r_abort("Can't find namespace `%s`", pkg);
1212
}
13-
return ns;
14-
}
15-
16-
static
17-
r_obj* ns_env_get(r_obj* env, const char* name) {
18-
r_obj* obj = KEEP(r_env_find(env, r_sym(name)));
19-
20-
// Can be a promise to a lazyLoadDBfetch() call
21-
if (r_typeof(obj) == R_TYPE_promise) {
22-
obj = r_eval(obj, r_envs.empty);
23-
}
24-
if (obj != r_syms.unbound) {
25-
FREE(1);
26-
return obj;
27-
}
2813

29-
// Trigger object not found error
30-
r_eval(r_sym(name), env);
31-
r_stop_unreachable();
14+
return r_env_get(R_NamespaceRegistry, pkg_sym);
3215
}
16+
3317
r_obj* r_base_ns_get(const char* name) {
34-
return ns_env_get(r_envs.base, name);
18+
return r_env_get(r_envs.base, r_sym(name));
3519
}
36-
37-
3820
r_obj* rlang_ns_get(const char* name) {
39-
return ns_env_get(rlang_ns_env, name);
21+
return r_env_get(rlang_ns_env, r_sym(name));
4022
}
4123

4224

0 commit comments

Comments
 (0)