summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFWoltermann@gmail.com <FWoltermann@gmail.com@076cb2c4-205e-83fd-5cf3-1be9aa105544>2012-06-08 16:48:28 +0000
committerFWoltermann@gmail.com <FWoltermann@gmail.com@076cb2c4-205e-83fd-5cf3-1be9aa105544>2012-06-08 16:48:28 +0000
commit567bd9471bf7061cf92061f3569f76e260be9c50 (patch)
treeb9283b99d8f0468e0c5674587339d9ac01aa96c2
parent85c79bef459d1dc7fc10573772b1785c152d9539 (diff)
downloadstarshatter-567bd9471bf7061cf92061f3569f76e260be9c50.zip
starshatter-567bd9471bf7061cf92061f3569f76e260be9c50.tar.gz
starshatter-567bd9471bf7061cf92061f3569f76e260be9c50.tar.bz2
Ooops, stupid mistake here.
-rw-r--r--Datafile/Archive.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/Datafile/Archive.cpp b/Datafile/Archive.cpp
index 039fbb1..9d47465 100644
--- a/Datafile/Archive.cpp
+++ b/Datafile/Archive.cpp
@@ -406,8 +406,10 @@ void DataArchive::Extract(const char* name)
ExpandEntry(index, buf);
std::string dirname = directory[index].name;
+ bool create_subdir = (dirname.find_first_of('/', 0) != std::string::npos);
std::wstring wdirname = ToWideString(dirname.substr(0, dirname.find_first_of('/')));
- CreateDirectory(wdirname.c_str(), NULL);
+ if (create_subdir)
+ CreateDirectory(wdirname.c_str(), NULL);
size_t offset = wdirname.length();
while (dirname.find_first_of('/', offset + 1) != std::string::npos) {
wdirname.push_back('/');
@@ -416,7 +418,7 @@ void DataArchive::Extract(const char* name)
offset = wdirname.length();
}
- FILE* f = fopen(directory[index].name, "wb");
+ FILE* f = fopen(directory[index].name, "w+b");
if (f) {
fwrite(buf, directory[index].size_orig, 1, f);
fclose(f);