Skip to content

Commit 0074c25

Browse files
committed
Fixed various string tests for Windows
1 parent 463a0fe commit 0074c25

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

engine/utils/String.cpp

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ String String::operator+(const char* rhs) const
195195
size_t lhsLength = Size();
196196
size_t rhsLength = strlen(rhs);
197197

198-
char cstr[lhsLength + rhsLength];
198+
char cstr[lhsLength + rhsLength + 1];
199199
strcpy(cstr, data);
200200
strcpy(cstr + lhsLength, rhs);
201201

@@ -207,7 +207,7 @@ String String::operator+(char rhs) const
207207
const char* data = Data();
208208
size_t lhsLength = Size();
209209

210-
char cstr[lhsLength + 1];
210+
char cstr[lhsLength + 1 + 1];
211211
strcpy(cstr, data);
212212
cstr[lhsLength] = rhs;
213213
cstr[lhsLength + 1] = '\0';
@@ -415,7 +415,7 @@ String String::SubString(int startPos, size_t length) const
415415
if (startPos >= len || (startPos + length) > len) return {};
416416

417417
// Copy over the substring and return it
418-
char subString[length];
418+
char subString[length + 1];
419419
strncpy(subString, data + startPos, length);
420420
subString[length] = '\0'; // Manually add the null-termination char
421421
return subString;
@@ -498,7 +498,7 @@ void String::Append(const char* string)
498498
size_t rhsLength = strlen(string);
499499
size_t fullLength = lhsLength + rhsLength;
500500

501-
char cstr[fullLength];
501+
char cstr[fullLength + 1];
502502
strcpy(cstr, data);
503503
strcpy(cstr + lhsLength, string);
504504

@@ -526,7 +526,7 @@ void String::Prepend(const String& string)
526526
size_t rhsLength = Size();
527527
size_t fullLength = lhsLength + rhsLength;
528528

529-
char cstr[fullLength];
529+
char cstr[fullLength + 1];
530530
strcpy(cstr, string.Data());
531531
strcpy(cstr + lhsLength, data);
532532

@@ -540,7 +540,7 @@ void String::Prepend(const char* string)
540540
size_t rhsLength = Size();
541541
size_t fullLength = lhsLength + rhsLength;
542542

543-
char cstr[fullLength];
543+
char cstr[fullLength + 1];
544544
strcpy(cstr, string);
545545
strcpy(cstr + lhsLength, data);
546546

@@ -565,14 +565,16 @@ void String::Erase(int startPos, size_t length)
565565
size_t len = Size();
566566
startPos = startPos < 0 ? (int) len + startPos : startPos;
567567
length = length == -1 ? len - startPos : length;
568-
if (startPos < 0 || (startPos + length) > len)
568+
569+
size_t newLen = len - length;
570+
if (startPos < 0 || (startPos + length) > len || newLen == 0)
569571
{
570572
Assign(nullptr);
571573
return;
572574
}
573575

574576
// Copy over the non-erased portions and assign it
575-
char newStr[len - length];
577+
char newStr[newLen];
576578
strncpy(newStr, data, startPos);
577579
strcpy(newStr + startPos, data + startPos + length);
578580
Assign(newStr);
@@ -618,7 +620,7 @@ bool String::Replace(const char* toReplace, const char* replacement)
618620
size_t replaceLen = strlen(replacement);
619621
size_t finalLen = (currentLen - toReplaceLen) + replaceLen;
620622

621-
char newStr[finalLen];
623+
char newStr[finalLen + 1];
622624
strncpy(newStr, data, pos);
623625
strncpy(newStr + pos, replacement, replaceLen);
624626
strcpy(newStr + pos + replaceLen, data + pos + toReplaceLen);
@@ -674,7 +676,7 @@ String operator+(const char* lhs, const String& rhs)
674676
size_t lhsLength = strlen(lhs);
675677
size_t rhsLength = rhs.Size();
676678

677-
char cstr[lhsLength + rhsLength];
679+
char cstr[lhsLength + rhsLength + 1];
678680
strcpy(cstr, lhs);
679681
strcpy(cstr + lhsLength, rhs.Str());
680682

@@ -685,7 +687,7 @@ String operator+(char lhs, const String& rhs)
685687
{
686688
size_t rhsLength = rhs.Size();
687689

688-
char cstr[1 + rhsLength];
690+
char cstr[1 + rhsLength + 1];
689691
cstr[0] = lhs;
690692
strcpy(cstr + 1, rhs.Str());
691693

tests/utils/test_String.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,7 @@ UTEST(test_String, FromLong)
585585
{
586586
// The string can be converted from long
587587
ASSERT_STREQ("2", Siege::String::FromLong(2l).Str());
588-
ASSERT_STREQ("90000000000000", Siege::String::FromLong(90000000000000l).Str());
588+
ASSERT_STREQ("900000000", Siege::String::FromLong(900000000l).Str());
589589
}
590590

591591
UTEST(test_String, FromSizeT)

0 commit comments

Comments
 (0)