Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
16a36a0
Fix segmentation faults in the C extension
oschwald Oct 2, 2026
108843d
Initialize the reader lock in tp_new
oschwald Oct 5, 2026
435b58d
Fix memory leaks and a use-after-free in the C extension
oschwald Oct 3, 2026
64ca4e3
Pass a Py_ssize_t length to Py_BuildValue
oschwald Oct 3, 2026
af912dd
Fix a reference leak when a map key fails to decode
oschwald Oct 2, 2026
571f5ea
Check the PyDict_SetItem result in from_map
oschwald Oct 3, 2026
ff1b0ef
Reject a map key that is not a string
oschwald Oct 3, 2026
51791b8
Decode uint32 values with PyLong_FromUnsignedLong
oschwald Oct 3, 2026
ed76a5c
Fix a reference leak on a corrupt metadata type
oschwald Oct 2, 2026
aad2b72
Check the result of Reader_close
oschwald Oct 3, 2026
7870349
Build Metadata in tp_new
oschwald Oct 5, 2026
9a25a09
Reopen the pure Python reader like the C extension
oschwald Oct 5, 2026
88b7e07
Report closed as True before init
oschwald Oct 6, 2026
610c387
Count a reopen before closing the old buffer
oschwald Oct 6, 2026
8b91704
Keep the old database when a reinit fails
oschwald Oct 6, 2026
5f37e14
Check a pure Python iterator only between records
oschwald Oct 6, 2026
b470da7
Check for a short entry list in from_map
oschwald Oct 6, 2026
b469448
Move reader_close_database below its first caller
oschwald Oct 6, 2026
c060c97
Refuse a close or reinit during a read on GIL builds
oschwald Oct 6, 2026
bd40092
Give _generation a class default
oschwald Oct 6, 2026
6c7389f
Switch to a new pure Python database in one step
oschwald Oct 6, 2026
d51d684
Share the corrupt-data error message
oschwald Oct 6, 2026
71ee436
Share how the tests pass a database in MODE_FD
oschwald Oct 6, 2026
444aad4
Move _reinitialize below the tests that call it
oschwald Oct 6, 2026
435b4f2
Keep subclass state when a pure Python reader opens
oschwald Oct 6, 2026
013ca3d
Test that a reinit releases the old database
oschwald Oct 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,29 @@
History
-------

3.3.0
++++++++++++++++++

* A second ``__init__`` on a pure Python ``Reader`` now closes the old
database, and an iterator from before it raises ``ValueError``, as in the
C extension. Before, the iterator walked the new database with node
numbers from the old one. A failed ``__init__`` keeps the old database.
After ``close()``, an iterator raises ``ValueError`` in every mode.
* C extension:

* Fixed segmentation faults from invalid use of ``Metadata``, ``Reader`` and
the internal iterator type.
* Fixed a segmentation fault on a database with a map key that is not a
string. Such a database now raises ``InvalidDatabaseError``.
* Fixed large ``uint32`` values, which came back negative on platforms
with a 32-bit C ``long``, such as Windows.
* Fixed memory leaks and a use-after-free. A second ``__init__`` on a
``Reader`` now closes the old database, and an iterator from before it
raises ``ValueError``. A failed ``__init__`` keeps the old database.
Reinitializing a ``Metadata`` changes nothing.
* Fixed a ``RuntimeWarning`` or ``RuntimeError`` on free-threaded Python on
macOS when a ``Reader`` failed to open or was used without ``__init__``.

3.2.0 (2026-09-10)
++++++++++++++++++

Expand Down
Loading
Loading