From f95509374696b64a66d85a4cd00e9d9388c0a3c2 Mon Sep 17 00:00:00 2001 From: J-D-K Date: Thu, 17 Nov 2022 14:58:02 -0500 Subject: [PATCH] Temp fixes for non-ASCII system users and drive crash if login canceled. --- Makefile | 2 +- inc/data.h | 10 +++++----- inc/util.h | 4 ++++ src/data.cpp | 23 ++++++++++++----------- src/fs/drive.cpp | 5 ++++- src/ui/uistr.cpp | 3 ++- src/util.cpp | 5 ----- 7 files changed, 28 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index f79d6f5..e463295 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,7 @@ INCLUDES := inc inc/ui inc/fs EXEFS_SRC := exefs_src APP_TITLE := JKSV APP_AUTHOR := JK -APP_VERSION := 12.15.2021 +APP_VERSION := 11.17.2022 ROMFS := romfs ICON := icon.jpg diff --git a/inc/data.h b/inc/data.h index de84e28..f5be849 100644 --- a/inc/data.h +++ b/inc/data.h @@ -7,9 +7,9 @@ #include "gfx.h" -#define BLD_MON 12 -#define BLD_DAY 15 -#define BLD_YEAR 2021 +#define BLD_MON 11 +#define BLD_DAY 17 +#define BLD_YEAR 2022 namespace data { @@ -45,8 +45,8 @@ namespace data { public: user() = default; - user(const AccountUid& _id, const std::string& _backupName); - user(const AccountUid& _id, const std::string& _backupName, SDL_Texture *img); + user(const AccountUid& _id, const std::string& _backupName, const std::string& _safeBackupName); + user(const AccountUid& _id, const std::string& _backupName, const std::string& _safeBackupName, SDL_Texture *img); //Sets ID void setUID(const AccountUid& _id); diff --git a/inc/util.h b/inc/util.h index 22fc442..02ebc8d 100644 --- a/inc/util.h +++ b/inc/util.h @@ -78,6 +78,10 @@ namespace util size_t getTotalPlacesInPath(const std::string& _path); void trimPath(std::string& _path, uint8_t _places); + inline bool isASCII(const uint32_t& t) + { + return t > 30 && t < 127; + } std::string safeString(const std::string& s); std::string getInfoString(data::user& u, const uint64_t& tid); diff --git a/src/data.cpp b/src/data.cpp index 5d7aa4c..fcb7998 100644 --- a/src/data.cpp +++ b/src/data.cpp @@ -163,7 +163,7 @@ static void loadUserAccounts() if(R_SUCCEEDED(accountListAllUsers(uids, 8, &total))) { for(int i = 0; i < total; i++) - data::users.emplace_back(uids[i], ""); + data::users.emplace_back(uids[i], "", ""); } delete[] uids; } @@ -249,10 +249,11 @@ bool data::loadUsersTitles(bool clearUsers) loadUserAccounts(); sysBCATPushed = false; tempPushed = false; - users.emplace_back(util::u128ToAccountUID(3), ui::getUIString("saveTypeMainMenu", 0)); - users.emplace_back(util::u128ToAccountUID(2), ui::getUIString("saveTypeMainMenu", 1)); - users.emplace_back(util::u128ToAccountUID(5), ui::getUIString("saveTypeMainMenu", 2)); - users.emplace_back(util::u128ToAccountUID(0), ui::getUIString("saveTypeMainMenu", 3)); + + users.emplace_back(util::u128ToAccountUID(3), ui::getUIString("saveTypeMainMenu", 0), "Device"); + users.emplace_back(util::u128ToAccountUID(2), ui::getUIString("saveTypeMainMenu", 1), "BCAT"); + users.emplace_back(util::u128ToAccountUID(5), ui::getUIString("saveTypeMainMenu", 2), "Cache"); + users.emplace_back(util::u128ToAccountUID(0), ui::getUIString("saveTypeMainMenu", 3), "System"); } for(unsigned i = 0; i < 7; i++) @@ -291,7 +292,7 @@ bool data::loadUsersTitles(bool clearUsers) { ++systemUserCount; sysBCATPushed = true; - users.emplace_back(util::u128ToAccountUID(4), ui::getUIString("saveTypeMainMenu", 4)); + users.emplace_back(util::u128ToAccountUID(4), ui::getUIString("saveTypeMainMenu", 4), "System BCAT"); } break; @@ -305,7 +306,7 @@ bool data::loadUsersTitles(bool clearUsers) { ++systemUserCount; tempPushed = true; - users.emplace_back(util::u128ToAccountUID(6), ui::getUIString("saveTypeMainMenu", 5)); + users.emplace_back(util::u128ToAccountUID(6), ui::getUIString("saveTypeMainMenu", 5), "Temporary"); } break; } @@ -313,7 +314,7 @@ bool data::loadUsersTitles(bool clearUsers) int u = getUserIndex(info.uid); if(u == -1) { - users.emplace(data::users.end() - systemUserCount, info.uid, ""); + users.emplace(data::users.end() - systemUserCount, info.uid, "", ""); u = getUserIndex(info.uid); } @@ -426,7 +427,7 @@ int data::getTitleIndexInUser(const data::user& u, const uint64_t& tid) return -1; } -data::user::user(const AccountUid& _id, const std::string& _backupName) +data::user::user(const AccountUid& _id, const std::string& _backupName, const std::string& _safeBackupName) { userID = _id; uID128 = util::accountUIDToU128(_id); @@ -457,13 +458,13 @@ data::user::user(const AccountUid& _id, const std::string& _backupName) else { username = _backupName.empty() ? util::getIDStr((uint64_t)uID128) : _backupName; - userSafe = _backupName.empty() ? util::getIDStr((uint64_t)uID128) : _backupName; + userSafe = _safeBackupName.empty() ? util::getIDStr((uint64_t)uID128) : _safeBackupName; userIcon = util::createIconGeneric(_backupName.c_str(), 48, false); } titles.reserve(64); } -data::user::user(const AccountUid& _id, const std::string& _backupName, SDL_Texture *img) : user(_id, _backupName) +data::user::user(const AccountUid& _id, const std::string& _backupName, const std::string& _safeBackupName, SDL_Texture *img) : user(_id, _backupName, _safeBackupName) { delIcon(); userIcon = img; diff --git a/src/fs/drive.cpp b/src/fs/drive.cpp index a61e65a..6035236 100644 --- a/src/fs/drive.cpp +++ b/src/fs/drive.cpp @@ -71,8 +71,11 @@ std::string fs::driveSignInGetAuthCode() size_t rLength = 0; char replyURLCstr[0x1000]; webReplyGetLastUrl(&webReply, replyURLCstr, 0x1000, &rLength); - replyURL.assign(replyURLCstr); + //Prevent crash if empty. + if(strlen(replyURLCstr) == 0) + return ""; + replyURL.assign(replyURLCstr); int unescLength = 0; size_t codeBegin = replyURL.find("approvalCode") + 13, codeEnd = replyURL.find_last_of('#'); size_t codeLength = codeEnd - codeBegin; diff --git a/src/ui/uistr.cpp b/src/ui/uistr.cpp index 885cdbc..fc3f8cf 100644 --- a/src/ui/uistr.cpp +++ b/src/ui/uistr.cpp @@ -150,7 +150,8 @@ void ui::initStrings() addUIString("saveTypeMainMenu", 2, "Cache"); addUIString("saveTypeMainMenu", 3, "System"); addUIString("saveTypeMainMenu", 4, "System BCAT"); - addUIString("saveTypeMainMenu", 5, "SysTemp Storagetem"); + addUIString("saveTypeMainMenu", 5, "Temporary"); + //This is redundant. Need to merge and use one or the other... addUIString("saveDataTypeText", 0, "System"); addUIString("saveDataTypeText", 1, "Account"); addUIString("saveDataTypeText", 2, "BCAT"); diff --git a/src/util.cpp b/src/util.cpp index 7a2be31..88fed8c 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -26,11 +26,6 @@ static bool isVerboten(const uint32_t& t) return false; } -static inline bool isASCII(const uint32_t& t) -{ - return t > 30 && t < 127; -} - void util::replaceStr(std::string& _str, const std::string& _find, const std::string& _rep) { size_t pos = 0;