mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +00:00
Bonsai: don't crash querying a freshly linked IFC with cache off
Link IFC with 'Use Cache' unchecked crashed with FileNotFoundError when no .ifc.cache.blend existed yet (a fresh link). Regression from35e3d9c42, which refactored the cache-clear guard from 'if not self.use_cache and blend_filepath.exists()' into should_clear_cache() but dropped the existence check on the not-use_cache path, so os.remove() ran on a non-existent file. Check blend_filepath.exists() first in should_clear_cache() so the remove is never attempted when there is nothing to clear, while keeping the query-mismatch cache invalidation intact. Fixes #8350 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> (cherry picked from commit4a095f9810)
This commit is contained in:
committed by
Dion Moult
parent
2d453492cc
commit
cf4d797b79
@@ -1579,10 +1579,13 @@ class LoadLink(bpy.types.Operator, tool.Ifc.Operator):
|
||||
json_filepath = self.filepath_.with_suffix(".ifc.cache.json")
|
||||
|
||||
def should_clear_cache() -> bool:
|
||||
if not self.use_cache:
|
||||
return True
|
||||
# Nothing to clear if the cache file was never created (e.g. a
|
||||
# fresh link). Check this first so os.remove below is never
|
||||
# called on a non-existent path, regardless of use_cache.
|
||||
if not blend_filepath.exists():
|
||||
return False
|
||||
if not self.use_cache:
|
||||
return True
|
||||
data = json.loads(json_filepath.read_text())
|
||||
# Empty 'query' - model loaded without custom query.
|
||||
# Missing 'query' - model was loaded before custom queries were introduced in Bonsai.
|
||||
|
||||
Reference in New Issue
Block a user