From c42296acf1f7a5ded3e9e76f3e05086bed28d175 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Tue, 21 Jun 2016 22:06:20 +0900 Subject: [PATCH] Robust handling for ssize_t on Win32 platform Now we define NGHTTP2_SSIZE_T which is typedef-ed to the appropriate type depending on the platform (x86/x86_64). See GH-616 for details --- lib/Makefile.msvc | 2 +- lib/includes/nghttp2/nghttp2.h | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/Makefile.msvc b/lib/Makefile.msvc index 2a930d11..2b8f1848 100644 --- a/lib/Makefile.msvc +++ b/lib/Makefile.msvc @@ -62,7 +62,7 @@ AR := lib #LD := xilink #AR := xilib RC := rc -CFLAGS := -I./includes -Dssize_t=long -D_U_="" +CFLAGS := -I./includes -Dssize_t=SSIZE_T -D_U_="" CFLAGS_R := -nologo -MD -W3 -Z7 -DBUILDING_NGHTTP2 CFLAGS_D := -nologo -MDd -W3 -Z7 -DBUILDING_NGHTTP2 \ diff --git a/lib/includes/nghttp2/nghttp2.h b/lib/includes/nghttp2/nghttp2.h index d567afd3..8e87ce4b 100644 --- a/lib/includes/nghttp2/nghttp2.h +++ b/lib/includes/nghttp2/nghttp2.h @@ -35,6 +35,17 @@ extern "C" { #endif +/* For Win32 application, use type NGHTTP2_SSIZE_T instead of + ssize_t. */ +#if defined(WIN32) +#pragma once +#include +typedef SSIZE_T NGHTTP2_SSIZE_T; +#if !defined(BUILDING_NGHTTP2) +#define ssize_t NGHTTP2_SSIZE_T +#endif +#endif + #include #if defined(_MSC_VER) && (_MSC_VER < 1800) /* MSVC < 2013 does not have inttypes.h because it is not C99 @@ -5003,6 +5014,12 @@ NGHTTP2_EXTERN int32_t nghttp2_stream_get_weight(nghttp2_stream *stream); NGHTTP2_EXTERN int32_t nghttp2_stream_get_sum_dependency_weight(nghttp2_stream *stream); +#if defined(WIN32) +#if !defined(BUILDING_NGHTTP2) +#undef ssize_t +#endif +#endif + #ifdef __cplusplus } #endif