| Index: src/platform-macos.cc
|
| ===================================================================
|
| --- src/platform-macos.cc (revision 282)
|
| +++ src/platform-macos.cc (working copy)
|
| @@ -132,6 +132,11 @@
|
| }
|
|
|
|
|
| +FILE* OS::FOpen(const char* path, const char* mode) {
|
| + return fopen(path, mode);
|
| +}
|
| +
|
| +
|
| void OS::Print(const char* format, ...) {
|
| va_list args;
|
| va_start(args, format);
|
| @@ -158,19 +163,21 @@
|
| }
|
|
|
|
|
| -int OS::SNPrintF(char* str, size_t size, const char* format, ...) {
|
| +int OS::SNPrintF(Vector<char> str, const char* format, ...) {
|
| va_list args;
|
| va_start(args, format);
|
| - int result = VSNPrintF(str, size, format, args);
|
| + int result = VSNPrintF(str, format, args);
|
| va_end(args);
|
| return result;
|
| }
|
|
|
|
|
| -int OS::VSNPrintF(char* str, size_t size, const char* format, va_list args) {
|
| - int n = vsnprintf(str, size, format, args); // forward to Mac OS X.
|
| - if (n < 0 || static_cast<size_t>(n) >= size) {
|
| - str[size - 1] = '\0';
|
| +int OS::VSNPrintF(Vector<char> str,
|
| + const char* format,
|
| + va_list args) {
|
| + int n = vsnprintf(str.start(), str.length(), format, args);
|
| + if (n < 0 || n >= str.length()) {
|
| + str[str.length() - 1] = '\0';
|
| return -1;
|
| } else {
|
| return n;
|
| @@ -178,6 +185,21 @@
|
| }
|
|
|
|
|
| +void OS::StrNCpy(Vector<char> dest, const char* src, size_t n) {
|
| + strncpy(dest.start(), src, n);
|
| +}
|
| +
|
| +
|
| +void OS::WcsCpy(Vector<wchar_t> dest, const wchar_t* src) {
|
| + wcscpy(dest.start(), src);
|
| +}
|
| +
|
| +
|
| +char *OS::StrDup(const char* str) {
|
| + return strdup(str);
|
| +}
|
| +
|
| +
|
| // We keep the lowest and highest addresses mapped as a quick way of
|
| // determining that pointers are outside the heap (used mostly in assertions
|
| // and verification). The estimate is conservative, ie, not all addresses in
|
| @@ -299,7 +321,10 @@
|
| frames[i].address = addresses[i];
|
| // Format a text representation of the frame based on the information
|
| // available.
|
| - SNPrintF(frames[i].text, kStackWalkMaxTextLen, "%s", symbols[i]);
|
| + SNPrintF(MutableCStrVector(frames[i].text,
|
| + kStackWalkMaxTextLen),
|
| + "%s",
|
| + symbols[i]);
|
| // Make sure line termination is in place.
|
| frames[i].text[kStackWalkMaxTextLen - 1] = '\0';
|
| }
|
|
|