瀏覽代碼

Merge pull request #1844 from daltomi/SIGSEGV

Fix segment violation MINIZIP_ENABLED
Juan Linietsky 10 年之前
父節點
當前提交
7c4a35496a
共有 2 個文件被更改,包括 16 次插入5 次删除
  1. 3 1
      core/io/file_access_pack.cpp
  2. 13 4
      main/main.cpp

+ 3 - 1
core/io/file_access_pack.cpp

@@ -92,7 +92,9 @@ void PackedData::add_path(const String& pkg_path, const String& path, uint64_t o
 
 void PackedData::add_pack_source(PackSource *p_source) {
 
-	sources.push_back(p_source);
+	if (p_source != NULL) {
+		sources.push_back(p_source);
+	}
 };
 
 PackedData *PackedData::singleton=NULL;

+ 13 - 4
main/main.cpp

@@ -251,7 +251,14 @@ Error Main::setup(const char *execpath,int argc, char *argv[],bool p_second_phas
 		packed_data = memnew(PackedData);
 
 #ifdef MINIZIP_ENABLED
+	
+	//XXX: always get_singleton() == 0x0
 	zip_packed_data = ZipArchive::get_singleton();
+	//TODO: remove this temporary fix
+	if (!zip_packed_data) {
+		zip_packed_data = memnew(ZipArchive);
+	}
+
 	packed_data->add_pack_source(zip_packed_data);
 #endif
 
@@ -748,10 +755,12 @@ Error Main::setup(const char *execpath,int argc, char *argv[],bool p_second_phas
 	if (file_access_network_client)
 		memdelete(file_access_network_client);
 
-#ifdef MINIZIP_ENABLED
-	if (zip_packed_data)
-		memdelete( zip_packed_data );
-#endif
+// Note 1: *zip_packed_data live into *packed_data
+// Note 2: PackedData::~PackedData destroy this.
+//#ifdef MINIZIP_ENABLED
+//	if (zip_packed_data)
+//		memdelete( zip_packed_data );
+//#endif
 
 
 	unregister_core_types();