The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
.db/.mb files are memory-mapped
and read directly
(px_fread/px_fseek/px_ftell
operate on the mapping), and px_read() bypasses the
block-cache layer for mapped unencrypted files. Encrypted files keep the
decryption path. Streams are unmapped and released through the new
px_stream_free(), and a seek beyond the mapping falls back
to stdio for files that grow.c7dfd55, branch
fix/compiler-warnings-and-safety)px_get_record_pos_with_index), replacing the
linear scan; also fixes a latent deleted = 0 vs
*deleted = 0 assignment bug and validates the
TDataBlock read against the exact size.PX_retrieve_records(),
PX_retrieve_records_ex(), PX_free_record(),
PX_free_records() (single row-major allocation per batch).
PX_retrieve_record() is now a wrapper around the shared
internal implementation; behaviour of existing calls is unchanged.PX_close_blob() now frees
mb_name/mb_head even when the blob stream was
opened without the close flag (leak fix), and failed opens release the
stream (with unmap) before closing the FILE*, so the unmap
never seeks on a closed file.px_fileblocks. The workflow is Valgrind-clean.gregor.c includes paradox.h and carries
PXLIB_API/PXLIB_CALL qualifiers; the bundled
pxlib version constant is bumped to 0.6.11.get_long_be(): negative Long
field values (stored with the high bit set) were decoded as
value + 2^32 (e.g. -1 was returned as 4294967295). The
function now explicitly sign-extends the 32-bit big-endian word,
matching the original pxlib semantics that
PX_get_data_long() relies on.uint32_t intermediate, which also
removes the undefined behaviour of left-shifting into the sign bit of a
32-bit long. Mirrors the corresponding upstream pxlib fix.
Validated against the previous implementation: identical results for all
16-bit inputs and 2,000,000 random 32-bit inputs.test-long-fields.R: regression tests for Long value
decoding (boundary values ±2147483647, ±1, 0, NULL/NA handling,
metadata). Uses a minimal Paradox 3.0 table generated at test time
(helper-long-fixture.R), since the bundled corpora contain
only one negative Long value (-40 in TypSammlung.DB).PX_create_file, PX_put_record,
PX_update_record, PX_delete_record,
PX_pack, and all encoding write functions.paradox-gsf.h, paradox-mp.h,
px_encode.c/h, px_memprof.c.get_px_head() that
caused a segfault with -O2 + LTO when opening encrypted
files.#include "paradox.h" in 5 .c
files (paradox.c, px_io.c,
px_head.c, px_misc.c,
px_memory.c).px_passwd_checksum() for
passwords > 255 chars.find_blob_file() now normalises paths with forward
slashes to ensure consistent expect_equal() comparisons on
Windows UCRT.get_px_head() and _px_get_data_blob():
replaced ret < 0 checks with exact-size comparisons
(ret != sizeof(...)) after read() calls to
detect short/truncated reads from corrupted files.test-encryption.R: Full encryption workflow tests.test-find_blob_file.R: BLOB file auto-detection
tests.test-recode_if_needed.R: Encoding conversion
tests.test-px_close_file.R: Error handling for file close
operations.test-corrupted_file.R: Handling of non-Paradox
files.test-missing_blob.R: Behavior when BLOB file is
missing.test-password_edge_cases.R: Password validation edge
cases.test-encoding_edge_cases.R: Invalid encoding
handling.test-path_edge_cases.R: Path validation edge
cases.password
argument to read_paradox(). Users can now read
password-protected Paradox files (.db) and associated BLOB/Memo files
(.MB).pxlib_metadata()
now returns human-readable field types (e.g., “Alpha”, “Date”, “Memo”)
instead of raw integer codes.pxlib engine to ensure stability on
64-bit systems.
long int with int32_t in data
reading functions to ensure correct data width on 64-bit systems
(Windows/Linux).src/px_head.c to
prevent undefined behavior and header corruption.writeproc signature to ssize_t for
POSIX compliance.read_paradox() function for a
simple, one-step workflow to read Paradox files. This is now the
recommended function for most users.pxlib_metadata() function to retrieve database
metadata (number of records, field details, encoding) without reading
the entire dataset.stringi package(ICU) instead of Riconv. This fixes test
failures on CRAN and improves robustness for files on various operating
systems.stringi to package imports.read_paradox() and
pxlib_metadata() functions.rb+ → rb).
This ensures full compliance with CRAN Policy (no writes outside of
temporary directories).PX_get_data_alpha
(discovered with AddressSanitizer). Now the function safely respects
field length and prevents out-of-bounds reads for fixed-length strings
without \0..gitignore entries for
cran-comments.md and CRAN-SUBMISSION.\dontrun{} in examples.biolife.db, of_cp866.db in
inst/extdata).rmarkdown in
VignetteBuilder--no-suggests.These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.