Fix #5809: Add safety check during file.write (#6292)

Co-authored-by: theseyan <sayanjyotidasworkmail@gmai.com>
This commit is contained in:
Sayan J. Das
2025-03-17 16:47:42 +05:30
committed by GitHub
parent a8ff6ecf14
commit cf3a554b15
2 changed files with 5 additions and 2 deletions
+2 -2
View File
@@ -675,6 +675,7 @@ class file:
"""
path = Path(path)
path.parent.mkdir(parents=True, exist_ok=True)
if format == None:
format = ifcopenshell.guess_format(path)
if format == ".ifcXML":
@@ -690,8 +691,7 @@ class file:
if format == ".ifcZIP":
return self.write(path, ".ifc", zipped=True)
self.wrapped_data.write(str(path))
if not path.exists():
raise PermissionError(f"Failed to write to '{path}', check folder permissions.")
if zipped:
unzipped_path = path.with_suffix(format)
path.rename(unzipped_path)
+3
View File
@@ -142,6 +142,9 @@ static IfcUtil::ArgumentType helper_fn_attribute_type(const IfcUtil::IfcBaseClas
void write(const std::string& fn) {
std::ofstream f(IfcUtil::path::from_utf8(fn).c_str());
if (!f.good()) {
throw std::runtime_error("Failed to write to path: '" + fn + "', check folder and file permissions.");
}
f << (*$self);
}