aboutsummaryrefslogtreecommitdiff
path: root/common/str.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2010-10-18 20:20:14 +0000
committerEugene Sandulenko2010-10-18 20:20:14 +0000
commitf7645fea4504450370a81da4ea4d9248660860c9 (patch)
treed2fbb084518c8d83d45cd9bffc1c9198f2eec3c6 /common/str.cpp
parent7f7a6cdafd758287f6bbb767adb98a42edb2f4a2 (diff)
downloadscummvm-rg350-f7645fea4504450370a81da4ea4d9248660860c9.tar.gz
scummvm-rg350-f7645fea4504450370a81da4ea4d9248660860c9.tar.bz2
scummvm-rg350-f7645fea4504450370a81da4ea4d9248660860c9.zip
Revert "COMMON: Implement Common::vprintf(). Patch by littleboy"
svn-id: r53586
Diffstat (limited to 'common/str.cpp')
-rw-r--r--common/str.cpp29
1 files changed, 6 insertions, 23 deletions
diff --git a/common/str.cpp b/common/str.cpp
index b4eadaca60..c3c19adfe6 100644
--- a/common/str.cpp
+++ b/common/str.cpp
@@ -30,18 +30,6 @@
#include <stdarg.h>
-#ifndef VA_COPY
-#if defined(HAVE_VA_COPY) || defined(va_copy)
-#define VA_COPY(dest, src) va_copy(dest, src)
-#else
-#ifdef HAVE___VA_COPY
-#define VA_COPY(dest, src) __va_copy(dest, src)
-#else
-#define VA_COPY(dest, src) (dest) = (src)
-#endif
-#endif
-#endif
-
namespace Common {
MemoryPool *g_refCountPool = 0; // FIXME: This is never freed right now
@@ -443,22 +431,13 @@ uint String::hash() const {
// static
String String::printf(const char *fmt, ...) {
- va_list argptr;
-
- va_start(argptr, fmt);
- Common::String output = vprintf(fmt, argptr);
- va_end (argptr);
-
- return output;
-}
-
-String String::vprintf(const char *fmt, va_list argptr) {
String output;
assert(output.isStorageIntern());
va_list va;
- VA_COPY(va, argptr);
+ va_start(va, fmt);
int len = vsnprintf(output._str, _builtinCapacity, fmt, va);
+ va_end(va);
if (len == -1 || len == _builtinCapacity - 1) {
// MSVC and IRIX don't return the size the full string would take up.
@@ -481,7 +460,9 @@ String String::vprintf(const char *fmt, va_list argptr) {
assert(!output.isStorageIntern());
size = output._extern._capacity;
+ va_start(va, fmt);
len = vsnprintf(output._str, size, fmt, va);
+ va_end(va);
} while (len == -1 || len >= size - 1);
output._size = len;
} else if (len < (int)_builtinCapacity) {
@@ -490,7 +471,9 @@ String String::vprintf(const char *fmt, va_list argptr) {
} else {
// vsnprintf didn't have enough space, so grow buffer
output.ensureCapacity(len, false);
+ va_start(va, fmt);
int len2 = vsnprintf(output._str, len+1, fmt, va);
+ va_end(va);
assert(len == len2);
output._size = len2;
}