mirror of
https://github.com/ScrelliCopter/tmx2gba.git
synced 2025-02-21 03:29:25 +11:00
Trim leading and tailing whitespace in base64 string, fixes exception in base64 lib
This commit is contained in:
@@ -46,11 +46,19 @@ TmxReader::~TmxReader()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TmxReader::DecodeMap(uint32_t* aOut, size_t aOutSize, const std::string& aStrIn)
|
bool TmxReader::DecodeMap(uint32_t* aOut, size_t aOutSize, const std::string& aBase64Dat)
|
||||||
{
|
{
|
||||||
|
// Cut leading & trailing whitespace (including newlines)
|
||||||
|
auto beg = std::find_if_not(aBase64Dat.begin(), aBase64Dat.end(), std::isspace);
|
||||||
|
if (beg == std::end(aBase64Dat))
|
||||||
|
return false;
|
||||||
|
auto end = std::find_if_not(aBase64Dat.rbegin(), aBase64Dat.rend(), std::isspace);
|
||||||
|
std::size_t begOff = std::distance(std::begin(aBase64Dat), beg);
|
||||||
|
std::size_t endOff = std::distance(end, std::rend(aBase64Dat)) - begOff;
|
||||||
|
auto trimmed = aBase64Dat.substr(begOff, endOff);
|
||||||
|
|
||||||
// Decode base64 string.
|
// Decode base64 string.
|
||||||
size_t cutTheCrap = aStrIn.find_first_not_of(" \t\n\r");
|
std::string decoded = base64_decode(trimmed);
|
||||||
std::string decoded = base64_decode(aStrIn.substr(cutTheCrap));
|
|
||||||
|
|
||||||
// Decompress compressed data.
|
// Decompress compressed data.
|
||||||
auto dstSize = static_cast<mz_ulong>(aOutSize);
|
auto dstSize = static_cast<mz_ulong>(aOutSize);
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public:
|
|||||||
uint32_t LidFromGid(uint32_t aGid);
|
uint32_t LidFromGid(uint32_t aGid);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static bool DecodeMap(uint32_t* aOut, size_t aOutSize, const std::string& aStrIn);
|
static bool DecodeMap(uint32_t* aOut, size_t aOutSize, const std::string& aBase64Dat);
|
||||||
void ReadTileset(rapidxml::xml_node<>* aXNode);
|
void ReadTileset(rapidxml::xml_node<>* aXNode);
|
||||||
void ReadLayer(rapidxml::xml_node<>* aXNode);
|
void ReadLayer(rapidxml::xml_node<>* aXNode);
|
||||||
void ReadObjects(rapidxml::xml_node<>* aXNode);
|
void ReadObjects(rapidxml::xml_node<>* aXNode);
|
||||||
|
|||||||
Reference in New Issue
Block a user