summaryrefslogtreecommitdiff
path: root/core/bindings.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-02-08 18:13:33 +0100
committerGitHub <noreply@github.com>2023-02-08 18:13:33 +0100
commitbef50416b92a3ed7bf44b361fc5360f9a52c83e6 (patch)
tree410070bf0157d69b23b820459553f238f9fddef3 /core/bindings.rs
parent19543ffec300390f20b577b29d92a58540aaef70 (diff)
fix(core): don't allow to import internal code is snapshot is loaded (#17694)
Addressing Luca concerns from https://github.com/denoland/deno/pull/17648#discussion_r1099352286
Diffstat (limited to 'core/bindings.rs')
-rw-r--r--core/bindings.rs17
1 files changed, 13 insertions, 4 deletions
diff --git a/core/bindings.rs b/core/bindings.rs
index dce97000c..50308b931 100644
--- a/core/bindings.rs
+++ b/core/bindings.rs
@@ -10,6 +10,7 @@ use v8::MapFnTo;
use crate::error::is_instance_of_error;
use crate::modules::get_asserted_module_type_from_assertions;
use crate::modules::parse_import_assertions;
+use crate::modules::resolve_helper;
use crate::modules::validate_import_assertions;
use crate::modules::ImportAssertionsKind;
use crate::modules::ModuleMap;
@@ -379,9 +380,12 @@ fn import_meta_resolve(
url_prop.to_rust_string_lossy(scope)
};
let module_map_rc = JsRuntime::module_map(scope);
- let loader = {
+ let (loader, snapshot_loaded_and_not_snapshotting) = {
let module_map = module_map_rc.borrow();
- module_map.loader.clone()
+ (
+ module_map.loader.clone(),
+ module_map.snapshot_loaded_and_not_snapshotting,
+ )
};
let specifier_str = specifier.to_rust_string_lossy(scope);
@@ -390,8 +394,13 @@ fn import_meta_resolve(
return;
}
- match loader.resolve(&specifier_str, &referrer, ResolutionKind::DynamicImport)
- {
+ match resolve_helper(
+ snapshot_loaded_and_not_snapshotting,
+ loader,
+ &specifier_str,
+ &referrer,
+ ResolutionKind::DynamicImport,
+ ) {
Ok(resolved) => {
let resolved_val = serde_v8::to_v8(scope, resolved.as_str()).unwrap();
rv.set(resolved_val);