Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

src: fix ssize_t error from nghttp2.h #44393

Merged
merged 2 commits into from Aug 29, 2022

Conversation

RaisinTen
Copy link
Member

@RaisinTen RaisinTen commented Aug 25, 2022

The "node_http2.h" include reordering enforced by clang-format (32446d8#diff-33f026e43570112875cf4c8eab6743496f3aa014329611128e348ec23d6f771cR1)
broke Electron's Node.js upgrade on Windows.

https://ci.appveyor.com/project/electron-bot/electron-x64-testing/builds/44562886/job/vf7dodmpnfn47y68

In file included from ../../third_party/electron_node/src/node_http2.cc:1:
In file included from ../../third_party/electron_node/src/node_http2.h:8:
../../third_party/electron_node/deps/nghttp2/lib/includes\nghttp2/nghttp2.h(930,9): error: unknown type name 'ssize_t'
typedef ssize_t (*nghttp2_data_source_read_callback)(
        ^

ssize_t is a part of the POSIX standard and it's not available on
Windows, so the fix for this is to include "node.h" which
typedefs it on Windows in

node/src/node.h

Lines 212 to 220 in bb4dff7

#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
.

Refs: electron/electron#35350 (comment)
Signed-off-by: Darshan Sen raisinten@gmail.com

cc @nodejs/cpp-reviewers

@nodejs-github-bot
Copy link
Contributor

nodejs-github-bot commented Aug 25, 2022

Review requested:

@nodejs-github-bot nodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. http2 Issues or PRs related to the http2 subsystem. needs-ci PRs that need a full CI run. labels Aug 25, 2022
Copy link
Member

@mcollina mcollina left a comment

lgtm

@RaisinTen RaisinTen force-pushed the fix-ssize_t-error branch 2 times, most recently from dc9bfca to 7d9a57f Compare Aug 25, 2022
codebytere added a commit to electron/electron that referenced this pull request Aug 25, 2022
Copy link
Member

@addaleax addaleax left a comment

Let’s not start duplicating multiple definitions of ssize_t in internal headers.

src/node_http2.h Outdated Show resolved Hide resolved
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
include "node.h" which typedefs it on Windows 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>
src/node_http2.h Outdated Show resolved Hide resolved
Co-authored-by: Anna Henningsen <github@addaleax.net>
@RaisinTen RaisinTen requested a review from addaleax Aug 26, 2022
@RaisinTen RaisinTen added the commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. label Aug 26, 2022
@RaisinTen RaisinTen added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Aug 27, 2022
@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot
Copy link
Contributor

nodejs-github-bot commented Aug 27, 2022

@RaisinTen RaisinTen self-assigned this Aug 29, 2022
codebytere added a commit to electron/electron that referenced this pull request Aug 29, 2022
@RaisinTen RaisinTen added the commit-queue Add this label to land a pull request using GitHub Actions. label Aug 29, 2022
@nodejs-github-bot nodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Aug 29, 2022
@nodejs-github-bot nodejs-github-bot merged commit 72aafbd into nodejs:main Aug 29, 2022
52 checks passed
@nodejs-github-bot
Copy link
Contributor

nodejs-github-bot commented Aug 29, 2022

Landed in 72aafbd

@RaisinTen RaisinTen deleted the fix-ssize_t-error branch Aug 29, 2022
jkleinsc pushed a commit to electron/electron that referenced this pull request Aug 29, 2022
* chore: bump node in DEPS to v16.17.0

* chore: fixup asar patch

* lib: use null-prototype objects for property descriptors

nodejs/node#43270

* src: make SecureContext fields private

nodejs/node#43173

* crypto: remove Node.js-specific webcrypto extensions

nodejs/node#43310

* test: refactor to top-level await

nodejs/node#43500

* deps: cherry-pick two libuv fixes

nodejs/node#43950

* src: slim down env-inl.h

nodejs/node#43745

* util: add AggregateError.prototype.errors to inspect output

nodejs/node#43646

* esm: improve performance & tidy tests

nodejs/node#43784

* src: NodeArrayBufferAllocator delegates to v8's allocator

nodejs/node#43594

* chore: update patch indices

* chore: update filenames

* src: refactor IsSupportedAuthenticatedMode

nodejs/node#42368

* src: add --openssl-legacy-provider option

nodejs/node#40478

* lib,src: add source map support for global eval

nodejs/node#43428

* trace_events: trace net connect event

nodejs/node#43903

* deps: update ICU to 71.1

nodejs/node#42655

This fails the test because it's missing https://chromium-review.googlesource.com/c/chromium/deps/icu/+/3841093

* lib: give names to promisified exists() and question()

nodejs/node#43218

* crypto: add CFRG curves to Web Crypto API

nodejs/node#42507

* src: fix memory leak for v8.serialize

nodejs/node#42695

This test does not work for Electron as they do not use V8's
ArrayBufferAllocator.

* buffer: fix atob input validation

nodejs/node#42539

* src: fix ssize_t error from nghttp2.h

nodejs/node#44393

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
RafaelGSS pushed a commit that referenced this pull request Sep 5, 2022
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
include "node.h" which typedefs it on Windows 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>
PR-URL: #44393
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Shelley Vohr <shelley.vohr@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
Fyko pushed a commit to Fyko/node that referenced this pull request Sep 15, 2022
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
include "node.h" which typedefs it on Windows 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>
PR-URL: nodejs#44393
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Shelley Vohr <shelley.vohr@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
targos pushed a commit that referenced this pull request Sep 16, 2022
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
include "node.h" which typedefs it on Windows 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>
PR-URL: #44393
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Shelley Vohr <shelley.vohr@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
author ready PRs that have at least one approval, no pending requests for changes, and a CI started. c++ Issues and PRs that require attention from people who are familiar with C++. commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. http2 Issues or PRs related to the http2 subsystem. needs-ci PRs that need a full CI run.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants