summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Src/StringUtil.cpp
diff options
context:
space:
mode:
authorhrydgard <hrydgard@gmail.com>2008-09-22 20:35:44 +0000
committerhrydgard <hrydgard@gmail.com>2008-09-22 20:35:44 +0000
commitcca92d4e385b73ae415e2e7b5b956163376349fd (patch)
tree14b0d13d25d9d4ae874086e0862c721d91d88435 /Source/Core/Common/Src/StringUtil.cpp
parent38f04809f14a924fb2c5925cd6d4f2ec1859087f (diff)
constification, code style, changed vector<FileInfo*> to vector<FileInfo> for less allocs and more speed in debug mode
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@611 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/Common/Src/StringUtil.cpp')
-rw-r--r--Source/Core/Common/Src/StringUtil.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/Source/Core/Common/Src/StringUtil.cpp b/Source/Core/Common/Src/StringUtil.cpp
index 8e9ff18601..286b41071f 100644
--- a/Source/Core/Common/Src/StringUtil.cpp
+++ b/Source/Core/Common/Src/StringUtil.cpp
@@ -135,20 +135,20 @@ bool AsciiToHex(const char* _szValue, u32& result)
return (true);
}
-
bool CharArrayFromFormatV(char* out, int outsize, const char* format, va_list args)
{
int writtenCount = vsnprintf(out, outsize, format, args);
- if (writtenCount > 0)
+ if (writtenCount > 0 && writtenCount < outsize)
{
out[writtenCount] = '\0';
- return(true);
+ return true;
}
else
{
out[outsize - 1] = '\0';
- return(false);
+ PanicAlert("DANGER WILL ROBINSON! CharArrayFromFormatV overflowed.");
+ return false;
}
}
@@ -165,6 +165,8 @@ void StringFromFormatV(std::string* out, const char* format, va_list args)
delete [] buf;
buf = new char[newSize + 1];
writtenCount = vsnprintf(buf, newSize, format, args);
+ if (writtenCount > (int)newSize)
+ writtenCount = -1;
// ARGH! vsnprintf does no longer return -1 on truncation in newer libc!
// WORKAROUND! let's fake the old behaviour (even though it's less efficient).
// TODO: figure out why the fix causes an invalid read in strlen called from vsnprintf :(