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

bpo-40280: select: Use NULL for empty fdset (GH-31865) #31865

Merged
merged 1 commit into from
Mar 14, 2022

Conversation

tiran
Copy link
Member

@tiran tiran commented Mar 14, 2022

wasm32-emscripten does not support exceptfds and requires NULL. Python
now passes NULL instead of a fdset pointer when the input list is empty.
This works fine on all platforms and might even be a tiny bit faster.

Signed-off-by: Christian Heimes [email protected]

https://bugs.python.org/issue40280

wasm32-emscripten does not support exceptfds and requires NULL. Python
now passes NULL instead of a fdset pointer when the input list is empty.
This works fine on all platforms and might even be a tiny bit faster.

Signed-off-by: Christian Heimes <[email protected]>
@tiran
Copy link
Member Author

tiran commented Mar 14, 2022

https://man7.org/linux/man-pages/man2/select.2.html

The principal arguments of select() are three "sets" of file descriptors (declared with the type fd_set), which allow the caller to wait for three classes of events on the specified set of file descriptors. Each of the fd_set arguments may be specified as NULL if no file descriptors are to be watched for the corresponding class of events.

@tiran tiran requested a review from vstinner March 14, 2022 11:42
@tiran tiran changed the title bpo-40280: select: Use NULL for empty fdset bpo-40280: select: Use NULL for empty fdset (GH-31865) Mar 14, 2022
@tiran tiran merged commit f00ced8 into python:main Mar 14, 2022
@tiran tiran deleted the bpo-40280-select branch March 14, 2022 13:40
@vstinner
Copy link
Member

Post-merge review: LGTM :-) If tomorrow we discover a platform which really requires a non-NULL pointer, we can fix that platform but keep the new behavior on most platforms. IMO passing NULL is perfectly fine.

carljm pushed a commit to carljm/cpython that referenced this pull request Mar 14, 2022
* main: (94 commits)
  Revert "bpo-46986: Upgrade bundled setuptools to 60.9.3 (pythonGH-31820)" (pythonGH-31879)
  bpo-30677: [doc] mention that os.mkdir() can raise FileNotFoundError (pythonGH-31548)
  git ignore Lib/site-packages (pythonGH-31862)
  bpo-31415: importtime was made by Inada Naoki (pythonGH-31875)
  bpo-46920: Remove code that has explainers why it was disabled (pythonGH-31813)
  bpo-46920: Remove disabled debug code added decades ago and likely unnecessary (pythonGH-31812)
  bpo-46920: Remove code that has no explainer why it was disabled (pythonGH-31814)
  bpo-46906: Mention native endian in PyFloat_Pack8() doc (pythonGH-31866)
  bpo-40280: select: Use NULL for empty fdset (pythonGH-31865)
  CI: Fix patchcheck (pythonGH-31708)
  bpo-46987: Remove _PySys_GetObjectId / _PySys_GetObjectId (pythonGH-31835)
  bpo-46994: Accept explicit contextvars.Context in asyncio create_task() API (pythonGH-31837)
  bpo-39829: Fix `__len__()` is called twice in list() constructor (pythonGH-31816)
  bpo-47003: Cleanup _overlapped module (pythonGH-31848)
  bpo-47004: Sync with importlib_metadata 4.11.3. (python#31854)
  bpo-46986: Upgrade bundled setuptools to 60.9.3 (pythonGH-31820)
  bpo-46985: Upgrade bundled pip to 22.0.4 (pythonGH-31819)
  bpo-46805: Add low level UDP socket functions to asyncio (pythonGH-31455)
  bpo-46995: Deprecate missing asyncio.Task.set_name() for third-party task implementations (pythonGH-31838)
  bpo-43215: Document Happy Eyeballs args of asyncio.open_connection (pythonGH-24525)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants