mirror of
https://github.com/gbdev/rgbds.git
synced 2026-01-09 10:01:51 +00:00
Do not limit strings to 255 characters
This commit is contained in:
@@ -9,7 +9,6 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "asm/fixpoint.hpp"
|
||||
#include "asm/lexer.hpp" // MAXSTRLEN
|
||||
#include "asm/warning.hpp"
|
||||
|
||||
void FormatSpec::useCharacter(int c) {
|
||||
@@ -133,11 +132,6 @@ void FormatSpec::appendString(std::string &str, std::string const &value) const
|
||||
str.append(padLen, ' ');
|
||||
str.append(value);
|
||||
}
|
||||
|
||||
if (str.length() > MAXSTRLEN) {
|
||||
error("Formatted string value too long\n");
|
||||
str.resize(MAXSTRLEN);
|
||||
}
|
||||
}
|
||||
|
||||
void FormatSpec::appendNumber(std::string &str, uint32_t value) const {
|
||||
@@ -245,9 +239,4 @@ void FormatSpec::appendNumber(std::string &str, uint32_t value) const {
|
||||
}
|
||||
str.append(valueBuf);
|
||||
}
|
||||
|
||||
if (str.length() > MAXSTRLEN) {
|
||||
error("Formatted numeric value too long\n");
|
||||
str.resize(MAXSTRLEN);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1347,11 +1347,6 @@ static std::string readString(bool raw) {
|
||||
}
|
||||
|
||||
finish:
|
||||
if (yylval.length() > MAXSTRLEN) {
|
||||
warning(WARNING_LONG_STR, "String constant too long\n");
|
||||
yylval.resize(MAXSTRLEN);
|
||||
}
|
||||
|
||||
lexerState->disableMacroArgs = false;
|
||||
lexerState->disableInterpolation = false;
|
||||
|
||||
@@ -1495,11 +1490,6 @@ static void appendStringLiteral(std::string &yylval, bool raw) {
|
||||
}
|
||||
|
||||
finish:
|
||||
if (yylval.length() > MAXSTRLEN) {
|
||||
warning(WARNING_LONG_STR, "String constant too long\n");
|
||||
yylval.resize(MAXSTRLEN);
|
||||
}
|
||||
|
||||
lexerState->disableMacroArgs = false;
|
||||
lexerState->disableInterpolation = false;
|
||||
}
|
||||
@@ -1933,10 +1923,6 @@ append:
|
||||
}
|
||||
|
||||
finish:
|
||||
if (yylval.length() > MAXSTRLEN) {
|
||||
warning(WARNING_LONG_STR, "Macro argument too long\n");
|
||||
yylval.resize(MAXSTRLEN);
|
||||
}
|
||||
// Trim right whitespace
|
||||
auto rightPos = std::find_if_not(yylval.rbegin(), yylval.rend(), isWhitespace);
|
||||
yylval.resize(rightPos.base() - yylval.begin());
|
||||
|
||||
@@ -1615,10 +1615,6 @@ strcat_args:
|
||||
| strcat_args COMMA string {
|
||||
$$ = std::move($1);
|
||||
$$.append($3);
|
||||
if ($$.length() > MAXSTRLEN) {
|
||||
warning(WARNING_LONG_STR, "STRCAT: String too long '%s'\n", $$.c_str());
|
||||
$$.resize(MAXSTRLEN);
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
@@ -2556,7 +2552,7 @@ static std::string strsubUTF8(std::string const &str, uint32_t pos, uint32_t len
|
||||
uint32_t curLen = 0;
|
||||
|
||||
// Compute the result length in bytes.
|
||||
while (ptr[index] && index - startIndex < MAXSTRLEN && curLen < len) {
|
||||
while (ptr[index] && curLen < len) {
|
||||
switch (decode(&state, &codep, ptr[index])) {
|
||||
case 1:
|
||||
errorInvalidUTF8Byte(ptr[index], "STRSUB");
|
||||
@@ -2569,7 +2565,6 @@ static std::string strsubUTF8(std::string const &str, uint32_t pos, uint32_t len
|
||||
index++;
|
||||
}
|
||||
|
||||
// Check if `index - startIndex == MAXSTRLEN` before `curLen == len`.
|
||||
if (curLen < len)
|
||||
warning(WARNING_BUILTIN_ARG, "STRSUB: Length too big: %" PRIu32 "\n", len);
|
||||
|
||||
@@ -2641,11 +2636,6 @@ static std::string strrpl(std::string_view str, std::string const &old, std::str
|
||||
str.remove_prefix(pos + old.size());
|
||||
}
|
||||
|
||||
if (rpl.length() > MAXSTRLEN) {
|
||||
warning(WARNING_LONG_STR, "STRRPL: String too long, got truncated\n");
|
||||
rpl.resize(MAXSTRLEN);
|
||||
}
|
||||
|
||||
return rpl;
|
||||
}
|
||||
|
||||
@@ -2656,7 +2646,7 @@ static std::string strfmt(
|
||||
std::string str;
|
||||
size_t argIndex = 0;
|
||||
|
||||
for (size_t i = 0; spec[i] != '\0' && str.length() <= MAXSTRLEN; ++i) {
|
||||
for (size_t i = 0; spec[i] != '\0'; ++i) {
|
||||
int c = spec[i];
|
||||
|
||||
if (c != '%') {
|
||||
@@ -2712,10 +2702,6 @@ static std::string strfmt(
|
||||
argIndex
|
||||
);
|
||||
|
||||
if (str.length() > MAXSTRLEN) {
|
||||
warning(WARNING_LONG_STR, "STRFMT: String too long, got truncated\n");
|
||||
str.resize(MAXSTRLEN);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,6 @@ static const WarningState defaultWarnings[ARRAY_SIZE(warningStates)] = {
|
||||
WARNING_DISABLED, // WARNING_EMPTY_MACRO_ARG
|
||||
WARNING_DISABLED, // WARNING_EMPTY_STRRPL
|
||||
WARNING_DISABLED, // WARNING_LARGE_CONSTANT
|
||||
WARNING_DISABLED, // WARNING_LONG_STR
|
||||
WARNING_DISABLED, // WARNING_MACRO_SHIFT
|
||||
WARNING_ENABLED, // WARNING_NESTED_COMMENT
|
||||
WARNING_ENABLED, // WARNING_OBSOLETE
|
||||
@@ -77,7 +76,6 @@ static char const * const warningFlags[NB_WARNINGS] = {
|
||||
"empty-macro-arg",
|
||||
"empty-strrpl",
|
||||
"large-constant",
|
||||
"long-string",
|
||||
"macro-shift",
|
||||
"nested-comment",
|
||||
"obsolete",
|
||||
@@ -157,7 +155,6 @@ static uint8_t const _wallCommands[] = {
|
||||
WARNING_EMPTY_DATA_DIRECTIVE,
|
||||
WARNING_EMPTY_STRRPL,
|
||||
WARNING_LARGE_CONSTANT,
|
||||
WARNING_LONG_STR,
|
||||
WARNING_NESTED_COMMENT,
|
||||
WARNING_OBSOLETE,
|
||||
WARNING_NUMERIC_STRING_1,
|
||||
@@ -188,7 +185,6 @@ static uint8_t const _weverythingCommands[] = {
|
||||
WARNING_EMPTY_MACRO_ARG,
|
||||
WARNING_EMPTY_STRRPL,
|
||||
WARNING_LARGE_CONSTANT,
|
||||
WARNING_LONG_STR,
|
||||
WARNING_MACRO_SHIFT,
|
||||
WARNING_NESTED_COMMENT,
|
||||
WARNING_OBSOLETE,
|
||||
|
||||
Reference in New Issue
Block a user