Skip to content

os.dup2() raises wrong OSError for negative fds #102179

Closed
@izbyshev

Description

@izbyshev
>>> os.dup2(-1, 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  OSError: [Errno 0] Error

The bug is caused by the old manual sign check that at some point lost the part that set errno:

cpython/Modules/posixmodule.c

Lines 9832 to 9834 in c3a1783

if (fd < 0 || fd2 < 0) {
posix_error();
return -1;

I'm going to submit a PR with the fix.

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    extension-modulesC modules in the Modules dirtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions