Repository navigation
Version 1.1.5
Bug Fixes
-
Fixed FIFO eviction order being corrupted by explicit deletes. Deleting a page from a
FIFOvolume could leave a stray empty slot that hijacked the implicit cursor, causing subsequent writes to evict the newest pages instead of the oldest — or to evict prematurely while capacity remained. Every delete operation on aFIFOvolume now ends with a compaction pass that merges the holes into the cursor run while preserving the circular age order. Volumes left in an ambiguous state by a crash — or written by earlier library versions — are repaired automatically onpcache_open.Note for adopters: deletion on
FIFOvolumes is now a costly operation (up to O(live pages) of page copies per call). Batch deletions withpcache_delete_pagesorpcache_delete_pages_rangeto amortize the cost.FIXEDvolumes are unaffected. -
Fixed
pcache_check_pages_rangeleaving*count_outuntouched when failing withPCACHE_CHECK_RANGE_INVALID_RANGE; it is now set to zero on every error return, matchingpcache_get_pages_range. -
Fixed I/O errors from short reads/writes (e.g. a data file truncated by a crash) being reported with
posix_error == 0or a staleerrno; short transfers now reportEIOand real errors keep theirerrno. -
Fixed a potential out-of-bounds write in the
*_with_counterfunctions on platforms with a 32-bitsize_t(e.g.arm64_32), where a hugepositionvalue could wrap past the bounds check. -
Fixed
pcache_opensilently ignoring a failure of the row-count query, which could send later FIFO writes down the fill-up path and insert rows beyondmax_pages; the open now fails instead.