diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-12-03 19:21:56 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-12-03 19:21:56 +0100 |
commit | 61de706cf43afba9d637ef099644c58d0de492c9 (patch) | |
tree | d88a12884f2c9df403ed8ef630c4a515c71851e5 /lib/Utils/xfuncs.cpp | |
parent | 51f279ca689ea79a873d1f80b000fd3f163b3087 (diff) | |
download | abrt-61de706cf43afba9d637ef099644c58d0de492c9.tar.gz abrt-61de706cf43afba9d637ef099644c58d0de492c9.tar.xz abrt-61de706cf43afba9d637ef099644c58d0de492c9.zip |
SQLite3: string& -> char*, -8k in code size
Run tested
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'lib/Utils/xfuncs.cpp')
-rw-r--r-- | lib/Utils/xfuncs.cpp | 45 |
1 files changed, 19 insertions, 26 deletions
diff --git a/lib/Utils/xfuncs.cpp b/lib/Utils/xfuncs.cpp index 583171f..b1941f7 100644 --- a/lib/Utils/xfuncs.cpp +++ b/lib/Utils/xfuncs.cpp @@ -141,28 +141,22 @@ off_t xlseek(int fd, off_t offset, int whence) return off; } -// Die with an error message if we can't malloc() enough space and do an -// sprintf() into that space. -char* xasprintf(const char *format, ...) +char* xvasprintf(const char *format, va_list p) { - va_list p; int r; char *string_ptr; #if 1 // GNU extension - va_start(p, format); r = vasprintf(&string_ptr, format, p); - va_end(p); #else // Bloat for systems that haven't got the GNU extension. - va_start(p, format); + va_list p2; r = vsnprintf(NULL, 0, format, p); - va_end(p); + va_copy(p2, p); string_ptr = xmalloc(r+1); - va_start(p, format); - r = vsnprintf(string_ptr, r+1, format, p); - va_end(p); + r = vsnprintf(string_ptr, r+1, format, p2); + va_end(p2); #endif if (r < 0) @@ -170,30 +164,29 @@ char* xasprintf(const char *format, ...) return string_ptr; } -std::string ssprintf(const char *format, ...) +// Die with an error message if we can't malloc() enough space and do an +// sprintf() into that space. +char* xasprintf(const char *format, ...) { va_list p; - int r; char *string_ptr; -#if 1 - // GNU extension - va_start(p, format); - r = vasprintf(&string_ptr, format, p); - va_end(p); -#else - // Bloat for systems that haven't got the GNU extension. va_start(p, format); - r = vsnprintf(NULL, 0, format, p); + string_ptr = xvasprintf(format, p); va_end(p); - string_ptr = xmalloc(r+1); + + return string_ptr; +} + +std::string ssprintf(const char *format, ...) +{ + va_list p; + char *string_ptr; + va_start(p, format); - r = vsnprintf(string_ptr, r+1, format, p); + string_ptr = xvasprintf(format, p); va_end(p); -#endif - if (r < 0) - die_out_of_memory(); std::string res = string_ptr; free(string_ptr); return res; |