From 666c244c84b8fc7d1bf08fbac3ba8463411532ea Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Verschelde?= Date: Mon, 23 Jan 2017 18:38:57 +0100 Subject: [PATCH] Devtools: Prevent clothes from saving invalid path Fixes #59. --- Source/Devtools/ConsoleCmds.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Source/Devtools/ConsoleCmds.cpp b/Source/Devtools/ConsoleCmds.cpp index cfb2efd..5183b43 100644 --- a/Source/Devtools/ConsoleCmds.cpp +++ b/Source/Devtools/ConsoleCmds.cpp @@ -141,6 +141,22 @@ static void set_clothes(int pnum, const char* args) char buf[64]; snprintf(buf, 63, "Textures/%s.png", args); + const std::string file_path = Folders::getResourcePath(buf); + FILE* tfile; + tfile = fopen(file_path.c_str(), "rb"); + if (tfile == NULL) { + perror((std::string("Couldn't find file ") + file_path + " to assign as clothes").c_str()); + + // FIXME: Reduce code duplication with GameTick (should come from a Console class) + for (int k = 14; k >= 1; k--) { + consoletext[k] = consoletext[k - 1]; + } + consoletext[0] = std::string("Could not load the requested texture '") + args + "', aborting."; + consoleselected = 0; + + return; + } + int id = Person::players[pnum]->numclothes; strncpy(Person::players[pnum]->clothes[id], buf, 64); Person::players[pnum]->clothestintr[id] = tintr; -- 2.39.5