mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-21 08:45:22 +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 from
35e3d9c42, 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>
This commit is contained in:
committed by
Dion Moult
parent
82f73c29ea
commit
4a095f9810
@@ -1578,10 +1578,13 @@ class LoadLink(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
json_filepath = self.filepath_.with_suffix(".ifc.cache.json")
|
json_filepath = self.filepath_.with_suffix(".ifc.cache.json")
|
||||||
|
|
||||||
def should_clear_cache() -> bool:
|
def should_clear_cache() -> bool:
|
||||||
if not self.use_cache:
|
# Nothing to clear if the cache file was never created (e.g. a
|
||||||
return True
|
# 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():
|
if not blend_filepath.exists():
|
||||||
return False
|
return False
|
||||||
|
if not self.use_cache:
|
||||||
|
return True
|
||||||
data = json.loads(json_filepath.read_text())
|
data = json.loads(json_filepath.read_text())
|
||||||
# Empty 'query' - model loaded without custom query.
|
# Empty 'query' - model loaded without custom query.
|
||||||
# Missing 'query' - model was loaded before custom queries were introduced in Bonsai.
|
# Missing 'query' - model was loaded before custom queries were introduced in Bonsai.
|
||||||
|
|||||||
Reference in New Issue
Block a user