Temp fixes for non-ASCII system users and drive crash if login canceled.

This commit is contained in:
J-D-K 2022-11-17 14:58:02 -05:00
parent 5049a52529
commit f955093746
7 changed files with 28 additions and 24 deletions

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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");

View File

@ -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;