mirror of
https://github.com/Sude-/lgogdownloader.git
synced 2024-11-20 11:49:17 +01:00
Fix crash caused by a change in API response for patches
Also fixes a bug that caused some patches to be ignored (patch file number was not reset after while loop that increased it)
This commit is contained in:
parent
7a1aae0a06
commit
e0a238b587
41
src/api.cpp
41
src/api.cpp
@ -311,7 +311,7 @@ gameDetails API::getGameDetails(const std::string& game_name, const unsigned int
|
|||||||
game.installers.push_back(
|
game.installers.push_back(
|
||||||
gameFile( installer["#updated"].isBool() ? installer["#updated"].asBool() : false,
|
gameFile( installer["#updated"].isBool() ? installer["#updated"].asBool() : false,
|
||||||
installer["id"].isInt() ? std::to_string(installer["id"].asInt()) : installer["id"].asString(),
|
installer["id"].isInt() ? std::to_string(installer["id"].asInt()) : installer["id"].asString(),
|
||||||
installer["#name"].asString(),
|
installer["name"].asString(),
|
||||||
installer["link"].asString(),
|
installer["link"].asString(),
|
||||||
installer["size"].asString(),
|
installer["size"].asString(),
|
||||||
language
|
language
|
||||||
@ -342,35 +342,50 @@ gameDetails API::getGameDetails(const std::string& game_name, const unsigned int
|
|||||||
if (lang & GlobalConstants::LANGUAGES[i].languageId)
|
if (lang & GlobalConstants::LANGUAGES[i].languageId)
|
||||||
{
|
{
|
||||||
unsigned int patch_number = 1;
|
unsigned int patch_number = 1;
|
||||||
unsigned int patch_number_file = 1;
|
unsigned int patch_number_file = 0;
|
||||||
std::string patchname = GlobalConstants::LANGUAGES[i].languageCode + std::to_string(patch_number) + "patch" + std::to_string(patch_number_file);
|
std::string patchname = GlobalConstants::LANGUAGES[i].languageCode + std::to_string(patch_number) + "patch" + std::to_string(patch_number_file);
|
||||||
if (root["game"].isMember(patchname)) // found a patch node
|
if (root["game"].isMember(patchname)) // found a patch node
|
||||||
{
|
{
|
||||||
Json::Value patchnode = root["game"][patchname];
|
Json::Value patchnode = root["game"][patchname];
|
||||||
while (!patchnode.empty())
|
while (!patchnode.empty()) // patch numbers
|
||||||
{
|
{
|
||||||
patch_number_file = 1;
|
while(!patchnode.empty()) // patch file numbers
|
||||||
while(!patchnode.empty())
|
|
||||||
{
|
{
|
||||||
for ( unsigned int index = 0; index < patchnode.size(); ++index )
|
if (patchnode.isArray())
|
||||||
{
|
{
|
||||||
Json::Value patch = patchnode[index];
|
for ( unsigned int index = 0; index < patchnode.size(); ++index )
|
||||||
|
{
|
||||||
|
Json::Value patch = patchnode[index];
|
||||||
|
|
||||||
|
game.patches.push_back(
|
||||||
|
gameFile( false, /* patches don't have "updated" flag */
|
||||||
|
patch["id"].isInt() ? std::to_string(patch["id"].asInt()) : patch["id"].asString(),
|
||||||
|
patch["name"].asString(),
|
||||||
|
patch["link"].asString(),
|
||||||
|
patch["size"].asString(),
|
||||||
|
GlobalConstants::LANGUAGES[i].languageId
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
game.patches.push_back(
|
game.patches.push_back(
|
||||||
gameFile( false, /* patches don't have "updated" flag */
|
gameFile( false, /* patches don't have "updated" flag */
|
||||||
patch["id"].isInt() ? std::to_string(patch["id"].asInt()) : patch["id"].asString(),
|
patchnode["id"].isInt() ? std::to_string(patchnode["id"].asInt()) : patchnode["id"].asString(),
|
||||||
patchname,
|
patchnode["name"].asString(),
|
||||||
patch["link"].asString(),
|
patchnode["link"].asString(),
|
||||||
patch["size_mb"].asString(),
|
patchnode["size"].asString(),
|
||||||
GlobalConstants::LANGUAGES[i].languageId
|
GlobalConstants::LANGUAGES[i].languageId
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
patch_number_file++;
|
patch_number_file++;
|
||||||
patchname = GlobalConstants::LANGUAGES[i].languageCode + std::to_string(patch_number) + "patch" + std::to_string(patch_number_file);
|
patchname = GlobalConstants::LANGUAGES[i].languageCode + std::to_string(patch_number) + "patch" + std::to_string(patch_number_file);
|
||||||
patchnode = root["game"][patchname];
|
patchnode = root["game"][patchname];
|
||||||
}
|
}
|
||||||
patch_number++;
|
patch_number++;
|
||||||
|
patch_number_file = 0;
|
||||||
patchname = GlobalConstants::LANGUAGES[i].languageCode + std::to_string(patch_number) + "patch" + std::to_string(patch_number_file);
|
patchname = GlobalConstants::LANGUAGES[i].languageCode + std::to_string(patch_number) + "patch" + std::to_string(patch_number_file);
|
||||||
patchnode = root["game"][patchname];
|
patchnode = root["game"][patchname];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user