Skip to content

Regression in zipfile, read1(-1) after seek() returns empty byte string #102956

Closed
@hrnciar

Description

@hrnciar

Bug report

When debugging a test failure in https://pypi.org/project/fs/ I found a regression in zipfile, read1(-1) after seek() returns empty byte string instead of substring. I've bisected it into this commit 330f1d5.

Reproducer:

import zipfile

# First, create the zip:
#   echo 'Hello, World' > hello.txt
#   zip hello.zip hello.txt

with zipfile.ZipFile('hello.zip') as myzip:
    with myzip.open('hello.txt') as myfile:
        print(myfile.read(5))
        print(myfile.seek(2, 1))
        print(myfile.read1(-1))

Expected output (3.11.2):

❯ python3.11 reproduce.py
b'Hello'
7
b'World\n'

Actual output (3.12.0a6):

❯ python3.12 reproduce.py
b'Hello'
7
b''

Your environment

  • CPython versions tested on: main
  • Operating system and architecture: Fedora 37, x86_64

Linked PRs

Metadata

Metadata

Assignees

Labels

3.12only security fixesstdlibPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or error

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions