Fixed build problem on mac, lint issues and a test failure on win32.


Review URL: http://codereview.chromium.org/2601

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@285 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 211751f8
...@@ -132,6 +132,11 @@ double OS::LocalTimeOffset() { ...@@ -132,6 +132,11 @@ double OS::LocalTimeOffset() {
} }
FILE* OS::FOpen(const char* path, const char* mode) {
return fopen(path, mode);
}
void OS::Print(const char* format, ...) { void OS::Print(const char* format, ...) {
va_list args; va_list args;
va_start(args, format); va_start(args, format);
...@@ -158,19 +163,21 @@ void OS::VPrintError(const char* format, va_list args) { ...@@ -158,19 +163,21 @@ void OS::VPrintError(const char* format, va_list args) {
} }
int OS::SNPrintF(char* str, size_t size, const char* format, ...) { int OS::SNPrintF(Vector<char> str, const char* format, ...) {
va_list args; va_list args;
va_start(args, format); va_start(args, format);
int result = VSNPrintF(str, size, format, args); int result = VSNPrintF(str, format, args);
va_end(args); va_end(args);
return result; return result;
} }
int OS::VSNPrintF(char* str, size_t size, const char* format, va_list args) { int OS::VSNPrintF(Vector<char> str,
int n = vsnprintf(str, size, format, args); // forward to Mac OS X. const char* format,
if (n < 0 || static_cast<size_t>(n) >= size) { va_list args) {
str[size - 1] = '\0'; int n = vsnprintf(str.start(), str.length(), format, args);
if (n < 0 || n >= str.length()) {
str[str.length() - 1] = '\0';
return -1; return -1;
} else { } else {
return n; return n;
...@@ -178,6 +185,21 @@ int OS::VSNPrintF(char* str, size_t size, const char* format, va_list args) { ...@@ -178,6 +185,21 @@ int OS::VSNPrintF(char* str, size_t size, const char* format, va_list args) {
} }
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 // We keep the lowest and highest addresses mapped as a quick way of
// determining that pointers are outside the heap (used mostly in assertions // determining that pointers are outside the heap (used mostly in assertions
// and verification). The estimate is conservative, ie, not all addresses in // and verification). The estimate is conservative, ie, not all addresses in
...@@ -299,7 +321,10 @@ int OS::StackWalk(StackFrame* frames, int frames_size) { ...@@ -299,7 +321,10 @@ int OS::StackWalk(StackFrame* frames, int frames_size) {
frames[i].address = addresses[i]; frames[i].address = addresses[i];
// Format a text representation of the frame based on the information // Format a text representation of the frame based on the information
// available. // 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. // Make sure line termination is in place.
frames[i].text[kStackWalkMaxTextLen - 1] = '\0'; frames[i].text[kStackWalkMaxTextLen - 1] = '\0';
} }
......
...@@ -668,7 +668,7 @@ int OS::SNPrintF(Vector<char> str, const char* format, ...) { ...@@ -668,7 +668,7 @@ int OS::SNPrintF(Vector<char> str, const char* format, ...) {
int OS::VSNPrintF(Vector<char> str, const char* format, va_list args) { int OS::VSNPrintF(Vector<char> str, const char* format, va_list args) {
int n = _vsnprintf_s(str.start(), str.length(), str.length(), format, args); int n = _vsnprintf_s(str.start(), str.length(), _TRUNCATE, format, args);
// Make sure to zero-terminate the string if the output was // Make sure to zero-terminate the string if the output was
// truncated or if there was an error. // truncated or if there was an error.
if (n < 0 || n >= str.length()) { if (n < 0 || n >= str.length()) {
...@@ -682,13 +682,15 @@ int OS::VSNPrintF(Vector<char> str, const char* format, va_list args) { ...@@ -682,13 +682,15 @@ int OS::VSNPrintF(Vector<char> str, const char* format, va_list args) {
void OS::StrNCpy(Vector<char> dest, const char* src, size_t n) { void OS::StrNCpy(Vector<char> dest, const char* src, size_t n) {
int result = strncpy_s(dest.start(), dest.length(), src, n); int result = strncpy_s(dest.start(), dest.length(), src, n);
USE(result); ASSERT(result == 0); USE(result);
ASSERT(result == 0);
} }
void OS::WcsCpy(Vector<wchar_t> dest, const wchar_t* src) { void OS::WcsCpy(Vector<wchar_t> dest, const wchar_t* src) {
int result = wcscpy_s(dest.start(), dest.length(), src); int result = wcscpy_s(dest.start(), dest.length(), src);
USE(result); ASSERT(result == 0); USE(result);
ASSERT(result == 0);
} }
......
...@@ -328,12 +328,12 @@ class Vector { ...@@ -328,12 +328,12 @@ class Vector {
}; };
template <typename T, int size> template <typename T, int kSize>
class EmbeddedVector : public Vector<T> { class EmbeddedVector : public Vector<T> {
public: public:
EmbeddedVector() : Vector<T>(buffer_, size) { } EmbeddedVector() : Vector<T>(buffer_, kSize) { }
private: private:
T buffer_[size]; T buffer_[kSize];
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment