CPropertyNameGenerator: Make use of unique_ptr
Same behavior, but more exception safe.
This commit is contained in:
parent
74ea300fe5
commit
bbfa7b364c
|
@ -4,6 +4,8 @@
|
||||||
#include "Core/Resource/Script/NPropertyMap.h"
|
#include "Core/Resource/Script/NPropertyMap.h"
|
||||||
#include <Common/Hash/CCRC32.h>
|
#include <Common/Hash/CCRC32.h>
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
/** Default constructor */
|
/** Default constructor */
|
||||||
CPropertyNameGenerator::CPropertyNameGenerator() = default;
|
CPropertyNameGenerator::CPropertyNameGenerator() = default;
|
||||||
|
|
||||||
|
@ -16,22 +18,22 @@ void CPropertyNameGenerator::Warmup()
|
||||||
mWords.clear();
|
mWords.clear();
|
||||||
|
|
||||||
// Load the word list from the file
|
// Load the word list from the file
|
||||||
FILE* pListFile = fopen(*(gDataDir + "resources/WordList.txt"), "r");
|
using FILEPtr = std::unique_ptr<FILE, decltype(&std::fclose)>;
|
||||||
|
auto pListFile = FILEPtr{std::fopen(*(gDataDir + "resources/WordList.txt"), "r"), std::fclose};
|
||||||
ASSERT(pListFile);
|
ASSERT(pListFile);
|
||||||
|
|
||||||
while (!feof(pListFile))
|
while (!feof(pListFile.get()))
|
||||||
{
|
{
|
||||||
char WordBuffer[64];
|
char WordBuffer[64];
|
||||||
fgets(&WordBuffer[0], 64, pListFile);
|
std::fgets(WordBuffer, sizeof(WordBuffer), pListFile.get());
|
||||||
WordBuffer[0] = TString::CharToUpper(WordBuffer[0]);
|
WordBuffer[0] = TString::CharToUpper(WordBuffer[0]);
|
||||||
|
|
||||||
SWord Word;
|
SWord Word;
|
||||||
Word.Word = TString(WordBuffer).Trimmed();
|
Word.Word = TString(WordBuffer).Trimmed();
|
||||||
Word.Usages = 0;
|
Word.Usages = 0;
|
||||||
mWords.push_back(Word);
|
mWords.push_back(std::move(Word));
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(pListFile);
|
|
||||||
mWordListLoadFinished = true;
|
mWordListLoadFinished = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue