| Index: src/utils.h
|
| diff --git a/src/utils.h b/src/utils.h
|
| index 1ee4470586d34b0d70d932202260d49956a4c693..a09f1778631dae6abf9acac5369c981d189a79c7 100644
|
| --- a/src/utils.h
|
| +++ b/src/utils.h
|
| @@ -13,7 +13,6 @@
|
| #include "include/v8.h"
|
| #include "src/allocation.h"
|
| #include "src/base/bits.h"
|
| -#include "src/base/compiler-specific.h"
|
| #include "src/base/logging.h"
|
| #include "src/base/macros.h"
|
| #include "src/base/platform/platform.h"
|
| @@ -909,21 +908,42 @@
|
| // ----------------------------------------------------------------------------
|
| // I/O support.
|
|
|
| +#if __GNUC__ >= 4
|
| +// On gcc we can ask the compiler to check the types of %d-style format
|
| +// specifiers and their associated arguments. TODO(erikcorry) fix this
|
| +// so it works on MacOSX.
|
| +#if defined(__MACH__) && defined(__APPLE__)
|
| +#define PRINTF_CHECKING
|
| +#define FPRINTF_CHECKING
|
| +#define PRINTF_METHOD_CHECKING
|
| +#define FPRINTF_METHOD_CHECKING
|
| +#else // MacOsX.
|
| +#define PRINTF_CHECKING __attribute__ ((format (printf, 1, 2)))
|
| +#define FPRINTF_CHECKING __attribute__ ((format (printf, 2, 3)))
|
| +#define PRINTF_METHOD_CHECKING __attribute__ ((format (printf, 2, 3)))
|
| +#define FPRINTF_METHOD_CHECKING __attribute__ ((format (printf, 3, 4)))
|
| +#endif
|
| +#else
|
| +#define PRINTF_CHECKING
|
| +#define FPRINTF_CHECKING
|
| +#define PRINTF_METHOD_CHECKING
|
| +#define FPRINTF_METHOD_CHECKING
|
| +#endif
|
| +
|
| // Our version of printf().
|
| -void PRINTF_FORMAT(1, 2) PrintF(const char* format, ...);
|
| -void PRINTF_FORMAT(2, 3) PrintF(FILE* out, const char* format, ...);
|
| +void PRINTF_CHECKING PrintF(const char* format, ...);
|
| +void FPRINTF_CHECKING PrintF(FILE* out, const char* format, ...);
|
|
|
| // Prepends the current process ID to the output.
|
| -void PRINTF_FORMAT(1, 2) PrintPID(const char* format, ...);
|
| +void PRINTF_CHECKING PrintPID(const char* format, ...);
|
|
|
| // Prepends the current process ID and given isolate pointer to the output.
|
| -void PRINTF_FORMAT(2, 3) PrintIsolate(void* isolate, const char* format, ...);
|
| +void PrintIsolate(void* isolate, const char* format, ...);
|
|
|
| // Safe formatting print. Ensures that str is always null-terminated.
|
| // Returns the number of chars written, or -1 if output was truncated.
|
| -int PRINTF_FORMAT(2, 3) SNPrintF(Vector<char> str, const char* format, ...);
|
| -int PRINTF_FORMAT(2, 0)
|
| - VSNPrintF(Vector<char> str, const char* format, va_list args);
|
| +int FPRINTF_CHECKING SNPrintF(Vector<char> str, const char* format, ...);
|
| +int VSNPrintF(Vector<char> str, const char* format, va_list args);
|
|
|
| void StrNCpy(Vector<char> dest, const char* src, size_t n);
|
|
|
| @@ -1426,11 +1446,10 @@
|
| StringBuilder(char* buffer, int size) : SimpleStringBuilder(buffer, size) { }
|
|
|
| // Add formatted contents to the builder just like printf().
|
| - void PRINTF_FORMAT(2, 3) AddFormatted(const char* format, ...);
|
| + void AddFormatted(const char* format, ...);
|
|
|
| // Add formatted contents like printf based on a va_list.
|
| - void PRINTF_FORMAT(2, 0) AddFormattedList(const char* format, va_list list);
|
| -
|
| + void AddFormattedList(const char* format, va_list list);
|
| private:
|
| DISALLOW_IMPLICIT_CONSTRUCTORS(StringBuilder);
|
| };
|
|
|