diff --git a/apps/ely-doc/src/merge/run.rs b/apps/ely-doc/src/merge/run.rs index bbc9087..c0c3287 100644 --- a/apps/ely-doc/src/merge/run.rs +++ b/apps/ely-doc/src/merge/run.rs @@ -247,9 +247,11 @@ impl Docs { let mut worker = worker.lock().expect("the worker lock"); let staged = template.with_file_name(format!("record.{extension}")); let made = worker.load(&ely_lok::file_url(&template)).and_then(|doc| { - fill(&mut worker, &doc, &table.headers, row)?; - doc.save_as(&mut worker, &ely_lok::file_url(&staged), extension)?; - worker.close_doc(doc)?; + let saved = fill(&mut worker, &doc, &table.headers, row) + .and_then(|()| doc.save_as(&mut worker, &ely_lok::file_url(&staged), extension)); + // Closed even when this record failed. + let closed = worker.close_doc(doc); + saved.and(closed)?; publish(&staged, target) }); made.map_err(|error| (n + 1, error))?; diff --git a/tasks/BUGS.md b/tasks/BUGS.md index fcad4c2..e4e51b2 100644 --- a/tasks/BUGS.md +++ b/tasks/BUGS.md @@ -51,7 +51,7 @@ - [x] D-02 邮件合并以当前标签为模板,预览后生成的每份都是同一条记录 — 选数据时记下模板标签,预览副本不作模板;R1 测试绕过选 CSV 入口;R2 PASS - [x] D-03 界面线程同步持 worker 锁读内核(样式、字体、书签、公式、分节名) — 后台读取,回来核对标签、视图与对话框请求号 - [x] D-04 一条批注的时间读不出,全部批注与修订都不显示 — 逐条解析,读不出的批注写明作者与原因(AX 可读、可滚动),修订照留 -- [ ] D-05 邮件合并某条记录失败时内核文档泄漏 +- [x] D-05 邮件合并某条记录失败时内核文档泄漏 — 失败的记录照样关闭内核文档,再传出首个错误 - [ ] D-06 导航栏大纲点击按当前列表取下标,后台重读后可能越界 - [ ] D-07 导航栏隐藏时仍随每次光标移动重读大纲与书签 - [ ] D-08 Linux、Windows 上“打印…”可用,导出 PDF 后才报“此平台未构建”