Skip to content

Commit e8a3cfa

Browse files
authored
chore(npm): fix debug panic in DepEntryCache (#32668)
Closes #32622
1 parent b31680f commit e8a3cfa

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

libs/npm/resolution/graph.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,17 +1050,19 @@ struct DepEntryCache(HashMap<Rc<PackageNv>, Rc<Vec<NpmDependencyEntry>>>);
10501050
impl DepEntryCache {
10511051
pub fn store(
10521052
&mut self,
1053-
nv: Rc<PackageNv>,
1053+
nv: &Rc<PackageNv>,
10541054
version_info: &NpmPackageVersionInfo,
10551055
) -> Result<Rc<Vec<NpmDependencyEntry>>, Box<NpmDependencyEntryError>> {
10561056
debug_assert_eq!(nv.version, version_info.version);
1057-
debug_assert!(!self.0.contains_key(&nv)); // we should not be re-inserting
1057+
if let Some(deps) = self.0.get(nv) {
1058+
return Ok(deps.clone());
1059+
}
10581060
let mut deps = version_info.dependencies_as_entries(&nv.name)?;
10591061
// Ensure name alphabetical and then version descending
10601062
// so these are resolved in that order
10611063
deps.sort();
10621064
let deps = Rc::new(deps);
1063-
self.0.insert(nv, deps.clone());
1065+
self.0.insert(nv.clone(), deps.clone());
10641066
Ok(deps)
10651067
}
10661068

@@ -1383,7 +1385,7 @@ impl<'a, TNpmRegistryApi: NpmRegistryApi>
13831385
let has_deps = if let Some(deps) = self.dep_entry_cache.get(&pkg_nv) {
13841386
!deps.is_empty()
13851387
} else {
1386-
let deps = self.dep_entry_cache.store(pkg_nv.clone(), info)?;
1388+
let deps = self.dep_entry_cache.store(&pkg_nv, info)?;
13871389
!deps.is_empty()
13881390
};
13891391

@@ -2585,8 +2587,7 @@ impl<'a, TNpmRegistryApi: NpmRegistryApi>
25852587
let version_info = package_info
25862588
.version_info(&nv, &self.version_resolver.link_packages)
25872589
.map_err(NpmPackageVersionResolutionError::VersionNotFound)?;
2588-
let child_deps =
2589-
self.dep_entry_cache.store(nv.clone(), version_info)?;
2590+
let child_deps = self.dep_entry_cache.store(&nv, version_info)?;
25902591

25912592
if child_deps.is_empty() {
25922593
self.graph.borrow_node_mut(path.node_id()).no_peers = true;
@@ -3041,7 +3042,7 @@ impl<'a, TNpmRegistryApi: NpmRegistryApi>
30413042
let version_info = package_info
30423043
.version_info(&nv, &self.version_resolver.link_packages)
30433044
.map_err(NpmPackageVersionResolutionError::VersionNotFound)?;
3044-
let deps = self.dep_entry_cache.store(nv.clone(), version_info)?;
3045+
let deps = self.dep_entry_cache.store(&nv, version_info)?;
30453046
pending_dep_entries.push_back((node_id, deps));
30463047
}
30473048

0 commit comments

Comments
 (0)