Define vasprintf is native, for Blackberry

This commit is contained in:
Sacha committed 2013-04-22 14:22:18 +10:00
1 parent 25e03c243c
commit e584a005ac
1 file changed
+37
+37
View File
@@ -5,6 +5,7 @@
#include <cstring>
#include <string>
#include <sstream>
#include <stdarg.h>
#include <vector>
#include "base/basictypes.h"
@@ -13,6 +14,42 @@
#pragma warning (disable:4996)
#endif
#ifdef BLACKBERRY
// QNX Does not have an implementation of vasprintf
static inline int vasprintf(char **rResult, const char *aFormat, va_list aAp)
{
int rVal;
char *result;
va_list ap;
result = (char *) malloc(16);
if (result == NULL) return -1;
va_copy(ap, aAp);
rVal = vsnprintf(result, 16, aFormat, ap);
va_end(ap);
if (rVal == -1)
{
free(result);
return rVal;
}
else if (rVal >= 16)
{
free(result);
result = (char *) malloc(rVal + 1);
if (result == NULL) return -1;
va_copy(ap, aAp);
rVal = vsnprintf(result, rVal + 1, aFormat, aAp);
va_end(ap);
}
*rResult = result;
return rVal;
}
#endif
// Dumb wrapper around itoa, providing a buffer. Declare this on the stack.
class ITOA {
public: