Skip to content

Commit

Permalink
src: fix ssize_t error from nghttp2.h
Browse files Browse the repository at this point in the history
The "node_http2.h" include reordering enforced by clang-format broke
Electron's Node.js upgrade on Windows. ssize_t is a part of the POSIX
standard and it's not available on Windows, so the fix for this is to
typedef it on Windows like in
https://github.com/nodejs/node/blob/bb4dff783ddb3b20c67041f7ccef796c335c2407/src/node.h#L212-L220.

Refs: electron/electron#35350 (comment)
Signed-off-by: Darshan Sen <raisinten@gmail.com>
  • Loading branch information
RaisinTen committed Aug 25, 2022
1 parent 937520a commit 742efa6
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/node_http2.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,21 @@

// FIXME(joyeecheung): nghttp2.h needs stdint.h to compile on Windows
#include <cstdint>

// nghttp2.h needs ssize_t to compile on Windows.
// Refs: https://github.com/electron/electron/pull/35350#discussion_r954890551
// Same as
// https://github.com/nodejs/node/blob/bb4dff783ddb3b20c67041f7ccef796c335c2407/src/node.h#L212-L220.
#ifdef _WIN32
#if !defined(_SSIZE_T_) && !defined(_SSIZE_T_DEFINED)
typedef intptr_t ssize_t;
#define _SSIZE_T_
#define _SSIZE_T_DEFINED
#endif
#else // !_WIN32
#include <sys/types.h> // size_t, ssize_t
#endif // _WIN32

#include "nghttp2/nghttp2.h"

#include "env.h"
Expand Down

0 comments on commit 742efa6

Please sign in to comment.