Skip to content

Commit e41c1b6

Browse files
authored
fix(sb_graph): failed to deserialize in the v1.1 migration phase due to specifying the wrong type (#403)
1 parent 5d4a9b4 commit e41c1b6

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

crates/sb_graph/eszip_migrate.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ mod v1_1 {
296296
Arc::from(b"1.1" as &[u8]),
297297
);
298298

299-
let mut v1_dir = {
299+
let v1_dir = {
300300
let Some(vfs_mod_data) = OptionFuture::<_>::from(
301301
v1_eszip
302302
.ensure_module(VFS_ESZIP_KEY)
@@ -307,23 +307,27 @@ mod v1_1 {
307307
return Ok(v1_1_eszip);
308308
};
309309

310-
let Ok(v1_dir) = rkyv::from_bytes::<v1::Directory>(&vfs_mod_data) else {
310+
let Ok(v1_dir) = rkyv::from_bytes::<Option<v1::Directory>>(&vfs_mod_data) else {
311311
bail!("cannot deserialize vfs data");
312312
};
313313

314314
v1_dir
315315
};
316316

317-
if v1_dir.name != "node_modules" {
318-
bail!("malformed vfs data (expected node_modules)");
319-
}
317+
let v1_1_dir = if let Some(mut v1_dir) = v1_dir {
318+
if v1_dir.name != "node_modules" {
319+
bail!("malformed vfs data (expected node_modules)");
320+
}
320321

321-
v1_dir.name = "localhost".into();
322+
v1_dir.name = "localhost".into();
322323

323-
let v1_1_dir = Some(v1::Directory {
324-
name: "node_modules".into(),
325-
entries: vec![v1::Entry::Dir(v1_dir)],
326-
});
324+
Some(v1::Directory {
325+
name: "node_modules".into(),
326+
entries: vec![v1::Entry::Dir(v1_dir)],
327+
})
328+
} else {
329+
None
330+
};
327331

328332
let v1_1_vfs_data = rkyv::to_bytes::<_, 1024>(&v1_1_dir)
329333
.with_context(|| "failed to serialize v1.1 vfs data")?;

0 commit comments

Comments
 (0)