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
This commit is contained in:
Tatsuhiro Tsujikawa 2016-06-21 22:06:20 +09:00
parent d6def22ad5
commit c42296acf1
2 changed files with 18 additions and 1 deletions

View File

@ -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 \

View File

@ -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 <basetsd.h>
typedef SSIZE_T NGHTTP2_SSIZE_T;
#if !defined(BUILDING_NGHTTP2)
#define ssize_t NGHTTP2_SSIZE_T
#endif
#endif
#include <stdlib.h>
#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