From 6522d0c498dea00ca25502f8ccda65fbb0e07810 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Fri, 26 Mar 2010 13:38:49 +0100 Subject: [PATCH] Even more fixes for random crashes in some less common cases (DF in the menu, etc...) --- examples/buildingsdump.cpp | 4 ++++ examples/creaturedump.cpp | 27 ++++++++++++++++++--------- examples/materialtest.cpp | 12 +++++++++++- examples/renamer.cpp | 4 ++-- library/DFHackAPI.cpp | 6 +++--- library/DFHackAPI.h | 4 ++-- library/DFMemInfoManager.cpp | 4 ++-- library/DFProcess-windows-SHM.cpp | 2 +- library/DFProcess-windows.cpp | 2 +- precompiled/linux/libdfconnect.so | Bin 186846 -> 186846 bytes precompiled/windows/SDL.dll | Bin 68608 -> 32768 bytes 11 files changed, 44 insertions(+), 21 deletions(-) diff --git a/examples/buildingsdump.cpp b/examples/buildingsdump.cpp index 4c4a0dc35..7b87b734b 100644 --- a/examples/buildingsdump.cpp +++ b/examples/buildingsdump.cpp @@ -109,6 +109,10 @@ int main (int argc,const char* argv[]) { cout << "usage:" << endl; cout << argv[0] << " object_name [number of lines]" << endl; + #ifndef LINUX_BUILD + cout << "Done. Press any key to continue" << endl; + cin.ignore(); + #endif return 0; } int lines = 16; diff --git a/examples/creaturedump.cpp b/examples/creaturedump.cpp index 723599854..200fca0f7 100644 --- a/examples/creaturedump.cpp +++ b/examples/creaturedump.cpp @@ -315,10 +315,25 @@ int main (void) return 1; } - + uint32_t numCreatures; + if(!DF.InitReadCreatures(numCreatures)) + { + cerr << "Can't get creatures" << endl; + #ifndef LINUX_BUILD + cin.ignore(); + #endif + return 1; + } + if(!numCreatures) + { + cerr << "No creatures to print" << endl; + #ifndef LINUX_BUILD + cin.ignore(); + #endif + return 1; + } + DF.ReadItemTypes(itemTypes); - - DF.ReadPlantMatgloss(mat.plantMat); DF.ReadWoodMatgloss(mat.woodMat); DF.ReadStoneMatgloss(mat.stoneMat); @@ -338,12 +353,6 @@ int main (void) cerr << "Can't get name tables" << endl; return 1; } - uint32_t numCreatures; - if(!DF.InitReadCreatures(numCreatures)) - { - cerr << "Can't get creatures" << endl; - return 1; - } DF.InitViewAndCursor(); for(uint32_t i = 0; i < numCreatures; i++) { diff --git a/examples/materialtest.cpp b/examples/materialtest.cpp index d28fb8e64..2337b3fc9 100644 --- a/examples/materialtest.cpp +++ b/examples/materialtest.cpp @@ -24,6 +24,16 @@ int main (void) return 1; } + if(!DF.InitMap()) + { + cerr << "No map loaded, it would be unsafe to enumerate materials" << endl; + #ifndef LINUX_BUILD + cin.ignore(); + #endif + return 1; + } + DF.DestroyMap(); + vector Woods; DF.ReadWoodMatgloss(Woods); @@ -46,7 +56,7 @@ int main (void) cout << "Creature: " << CreatureTypes[0].id << endl; cout << endl; cout << "Dumping all stones!" << endl; - for(int i = 0; i < Stones.size();i++) + for(uint32_t i = 0; i < Stones.size();i++) { cout << Stones[i].id << "$" << endl;; } diff --git a/examples/renamer.cpp b/examples/renamer.cpp index 39e501489..d00993487 100644 --- a/examples/renamer.cpp +++ b/examples/renamer.cpp @@ -450,7 +450,7 @@ start: uint32_t nickname = mem->getOffset("creature_name") + mem->getOffset("name_nickname"); p->writeSTLString(toChange.origin+nickname,changeString); } - catch (DFHack::Error::MissingMemoryDefinition& e) + catch (DFHack::Error::MissingMemoryDefinition&) { cerr << "Writing creature nicknames unsupported in this version!" << endl; } @@ -462,7 +462,7 @@ start: uint32_t custom_prof = mem->getOffset("creature_custom_profession"); p->writeSTLString(toChange.origin+custom_prof,changeString); } - catch (DFHack::Error::MissingMemoryDefinition& e) + catch (DFHack::Error::MissingMemoryDefinition&) { cerr << "Writing creature custom profession unsupported in this version!" << endl; } diff --git a/library/DFHackAPI.cpp b/library/DFHackAPI.cpp index de0fc3c79..f124fbcca 100644 --- a/library/DFHackAPI.cpp +++ b/library/DFHackAPI.cpp @@ -259,7 +259,7 @@ bool API::InitMap() off->y_count_offset = y_count_offset; off->z_count_offset = z_count_offset; full_barrier - const uint32_t cmd = Maps::MAP_INIT + d->maps_module << 16; + const uint32_t cmd = Maps::MAP_INIT + (d->maps_module << 16); g_pProcess->SetAndWait(cmd); //cerr << "Map acceleration enabled!" << endl; } @@ -920,7 +920,7 @@ bool API::InitReadEffects ( uint32_t & numeffects ) return true; } -bool API::ReadEffect(const int32_t index, t_effect_df40d & effect) +bool API::ReadEffect(const uint32_t index, t_effect_df40d & effect) { if(!d->effectsInited) return false; @@ -935,7 +935,7 @@ bool API::ReadEffect(const int32_t index, t_effect_df40d & effect) } // use with care! -bool API::WriteEffect(const int32_t index, const t_effect_df40d & effect) +bool API::WriteEffect(const uint32_t index, const t_effect_df40d & effect) { if(!d->effectsInited) return false; diff --git a/library/DFHackAPI.h b/library/DFHackAPI.h index c99b8c287..c615c4a11 100644 --- a/library/DFHackAPI.h +++ b/library/DFHackAPI.h @@ -192,8 +192,8 @@ namespace DFHack * Effects like mist, dragonfire or dust */ bool InitReadEffects ( uint32_t & numeffects ); - bool ReadEffect(const int32_t index, t_effect_df40d & effect); - bool WriteEffect(const int32_t index, const t_effect_df40d & effect); + bool ReadEffect(const uint32_t index, t_effect_df40d & effect); + bool WriteEffect(const uint32_t index, const t_effect_df40d & effect); void FinishReadEffects(); /* diff --git a/library/DFMemInfoManager.cpp b/library/DFMemInfoManager.cpp index 14bda92ec..68060e9ef 100644 --- a/library/DFMemInfoManager.cpp +++ b/library/DFMemInfoManager.cpp @@ -28,7 +28,7 @@ using namespace DFHack; MemInfoManager::~MemInfoManager() { // for each in std::vector meminfo;, delete - for(int i = 0; i < meminfo.size();i++) + for(uint32_t i = 0; i < meminfo.size();i++) { delete meminfo[i]; } @@ -248,7 +248,7 @@ bool MemInfoManager::loadFile(string path_to_xml) // transform elements { // trash existing list - for(int i = 0; i < meminfo.size(); i++) + for(uint32_t i = 0; i < meminfo.size(); i++) { delete meminfo[i]; } diff --git a/library/DFProcess-windows-SHM.cpp b/library/DFProcess-windows-SHM.cpp index fb1635061..5a61fae55 100644 --- a/library/DFProcess-windows-SHM.cpp +++ b/library/DFProcess-windows-SHM.cpp @@ -354,7 +354,7 @@ bool SHMProcess::Private::validate(vector & known_versions) { pe_timestamp = (*it)->getHexValue("pe_timestamp"); } - catch(Error::MissingMemoryDefinition& e) + catch(Error::MissingMemoryDefinition&) { continue; } diff --git a/library/DFProcess-windows.cpp b/library/DFProcess-windows.cpp index 271bf191c..4ab8fb7f0 100644 --- a/library/DFProcess-windows.cpp +++ b/library/DFProcess-windows.cpp @@ -97,7 +97,7 @@ NormalProcess::NormalProcess(uint32_t pid, vector & known_versio { pe_timestamp = (*it)->getHexValue("pe_timestamp"); } - catch(Error::MissingMemoryDefinition& e) + catch(Error::MissingMemoryDefinition&) { continue; } diff --git a/precompiled/linux/libdfconnect.so b/precompiled/linux/libdfconnect.so index 51f0e949ae320f2b5eb7e54421db09ec1c3caebd..98aaad1d0786878cb82e0349073d851517bbb2dd 100755 GIT binary patch delta 1407 zcmYk+OGs2v7zglk?in>_yye(9zGi%kTIrNQFCV07klK^$BP+_+G&3P7)xuizxS@-N zAX-EWwFrd>(oH1gA|z;$&?dJP2&F|22-B5FkMlq0OWoc3~9qhUT7pN;Th{xHCtu42r3*ePkosAr5hgx@G+mK({l zTDVV2Q@H003w$+Z$`O-=n0{n^(=kQ{8jb-oJ4Hjt>!XCY=INfK5b zvQcakk(z}^I7bPInuP{PDT$f|FC<8!W+8-&-Atlp;S0)dA>kuttrct>Pet-j&hg&ZJJ+rNXXgIauYYqtDE zI#nS{Of2uMY1JpvtoF=WBQh%0891qaXXZ8B?kRCrqAYE`L!owYNxq80>ke}YWje&5 oeorwkVEbL-wtn}RiTEjX%PJ-kVji;;385Rcy?ng3*LcwP4|DC&d;kCd delta 1407 zcmYk+O-NKx6bJBo-<|w^=Gf@?G2_Rml?q8;q?3jgsSB0y1I$P*8z&^~V__`{U*IAM zqD92eCJZ7d7X~6OVkih&6hxbdT3C^~sVs=VGOPPP_oVLL`*F@a_ug~fo1IFYol1UC zEIms-qtVIoSnSlu2dws5uJ|6F=y7g5ELSGr&rTEt6m7O z0S^l`Yyh{K!IGt8oX}J3DbtY4gM|`N%*#QWAoGwc7V6$ z)XHk#D@?$;zHjH0wZ89QS?l{w7W6%|jC1Zbl4HiOo$6Gnikkmp7^E?D%pC4D^XbM8 zt7!;@zl&1pR8*&gd^qubE|QNTSMkjpV9A3#!W|rBp?^pRq@IPge;rv3Mtpi}j{Zb? zsZf)Ot?sRP-6zsQdlnu2Iw~zG&`G~Ddjz+8NS)NEOWSWys7syKud3*h%YKP6ht;Tg nPqEKp`$yC@^X{?Z@Kfs6Rcs`TdF(PI^jxkTlry!1)~%s`Jzv!s diff --git a/precompiled/windows/SDL.dll b/precompiled/windows/SDL.dll index d6c94edb852c39573f2ea964f9441a205bf1a70f..61db5a270205e65ca74e9d4b5138dd01257a4ecf 100644 GIT binary patch literal 32768 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 T)v(d