forked from 1b-agent/opencadstudio-upstream
fix: final pre-PR review sweep
The final holistic + quality audit (three reviewers) returned GO with four majors; all fixed. - Start-page recents were the last unguarded writer of the open slot on web: clicking one under the open overlay clobbered the in-flight open and silently lost its bytes. Refused with the same in-progress notice the picker uses. - The web quit-after-save continuation stalled: a Quit pending now survives the tab-save AND continues — offering to save the next dirty tab or finishing the quit, mirroring native. - Data-extraction's multi-file pick is capped (16): every picked file becomes a full parsed document held for the session, and one giant pick could exhaust the wasm heap. - The xref registry tests raced each other on the process-global registry (reproduced 3/10 at high thread counts — CI roulette); they now hold a module-level guard. Minors: the collision warning is cataloged in all 21 locales; the docs' parallelism detail header no longer contradicts its own table; the drop-filter and name-hash helpers gained inline tests (their only prior coverage was a verbatim copy in the red-team suites).
This commit is contained in:
1 parent
b635d56c00
commit
f70d3fda44
29 files changed
+101
-1
No files matched your search
@@ -572,6 +572,16 @@ impl OpenCADStudio {
|
||||
.file_name()
|
||||
.map(|name| name.to_string_lossy().into_owned())
|
||||
.unwrap_or_else(|| path.to_string_lossy().into_owned());
|
||||
// The start page stays clickable under the open overlay,
|
||||
// so a recent can race an in-flight open and clobber it
|
||||
// (its WebFileOpened then fails the id check and the
|
||||
// bytes are lost) — refuse like on_open_file does.
|
||||
if self.opening.is_some() {
|
||||
self.command_line.push_info(
|
||||
crate::t!("An open is already in progress.").as_ref(),
|
||||
);
|
||||
return Task::none();
|
||||
}
|
||||
let state = std::sync::Arc::new(crate::io::OpenProgressState::new(
|
||||
crate::app::OPEN_PHASE_READING,
|
||||
));
|
||||
|
||||
Reference in new issue
Block a user