From ab54e32bbd53ba920ac8e6cd06330fc8aa317de3 Mon Sep 17 00:00:00 2001 From: Timothy J Fontaine Date: Tue, 28 Jan 2014 14:11:32 -0800 Subject: [PATCH] src: only define ssize_t on windows if undefined This matches how libuv handles the definition of ssize_t, by typedef'ing intptr_t to ssize_t. However, in the future we will use portable types from stddef.h --- src/node.h | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/node.h b/src/node.h index 677a24f43d..7a08dc9ef2 100644 --- a/src/node.h +++ b/src/node.h @@ -61,14 +61,6 @@ #include "v8.h" // NOLINT(build/include_order) #include "node_version.h" // NODE_MODULE_VERSION -#ifdef _WIN32 -# include -typedef SSIZE_T ssize_t; -typedef SIZE_T size_t; -#else // !_WIN32 -# include // size_t, ssize_t -#endif // _WIN32 - // Forward-declare these functions now to stop MSVS from becoming // terminally confused when it's done in node_internals.h namespace node { @@ -192,6 +184,17 @@ void DisplayExceptionLine(v8::Handle message); NODE_EXTERN v8::Local Encode(const void *buf, size_t len, enum encoding encoding = BINARY); +#ifdef _WIN32 +// TODO(tjfontaine) consider changing the usage of ssize_t to ptrdiff_t +#if !defined(_SSIZE_T_) && !defined(_SSIZE_T_DEFINED) +typedef intptr_t ssize_t; +# define _SSIZE_T_ +# define _SSIZE_T_DEFINED +#endif +#else // !_WIN32 +# include // size_t, ssize_t +#endif // _WIN32 + // Returns -1 if the handle was not valid for decoding NODE_EXTERN ssize_t DecodeBytes(v8::Handle, enum encoding encoding = BINARY);