瀏覽代碼

Merge pull request #74590 from timothyqiu/the-forbidden-directory

Fix crash when dumping extension API in a non-writable directory
Rémi Verschelde 2 年之前
父節點
當前提交
8b1568af70
共有 2 個文件被更改,包括 2 次插入0 次删除
  1. 1 0
      core/extension/extension_api_dump.cpp
  2. 1 0
      core/extension/make_interface_dumper.py

+ 1 - 0
core/extension/extension_api_dump.cpp

@@ -1052,6 +1052,7 @@ void GDExtensionAPIDump::generate_extension_json_file(const String &p_path) {
 
 
 	String text = json->stringify(api, "\t", false) + "\n";
 	String text = json->stringify(api, "\t", false) + "\n";
 	Ref<FileAccess> fa = FileAccess::open(p_path, FileAccess::WRITE);
 	Ref<FileAccess> fa = FileAccess::open(p_path, FileAccess::WRITE);
+	ERR_FAIL_COND_MSG(fa.is_null(), vformat("Cannot open file '%s' for writing.", p_path));
 	fa->store_string(text);
 	fa->store_string(text);
 }
 }
 
 

+ 1 - 0
core/extension/make_interface_dumper.py

@@ -27,6 +27,7 @@ class GDExtensionInterfaceDump {
     public:
     public:
         static void generate_gdextension_interface_file(const String &p_path) {
         static void generate_gdextension_interface_file(const String &p_path) {
             Ref<FileAccess> fa = FileAccess::open(p_path, FileAccess::WRITE);
             Ref<FileAccess> fa = FileAccess::open(p_path, FileAccess::WRITE);
+            ERR_FAIL_COND_MSG(fa.is_null(), vformat("Cannot open file '%s' for writing.", p_path));
             CharString cs(gdextension_interface_dump);
             CharString cs(gdextension_interface_dump);
             fa->store_buffer((const uint8_t *)cs.ptr(), cs.length());
             fa->store_buffer((const uint8_t *)cs.ptr(), cs.length());
         };
         };