bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

vasnprintf, u*-vasnprintf: Support string arguments longer than 2 GiB


From: Bruno Haible
Subject: vasnprintf, u*-vasnprintf: Support string arguments longer than 2 GiB
Date: Wed, 19 Jun 2024 22:20:08 +0200

The next step towards the *zprintf family of functions. Part of step 1 of
<https://lists.gnu.org/archive/html/bug-gnulib/2024-04/msg00352.html>.

I added three unit tests for %s with large arguments. (You need to pass option
--with-longrunning-tests to gnulib-tool, in order to include them.) Without
a change to lib/vasnprintf.c, all three failed:

FAIL: test-u8-asnprintf-big
===========================

../../gltests/unistdio/test-u8-asnprintf-big.c:131: assertion 'errno == ENOMEM' 
failed
FAIL test-u8-asnprintf-big (exit status: 134)

FAIL: test-ulc-asnprintf-big
============================

../../gltests/unistdio/test-ulc-asnprintf-big.c:156: assertion 'errno == 
ENOMEM' failed
FAIL test-ulc-asnprintf-big (exit status: 134)

FAIL: test-vasnprintf-big
=========================

../../gltests/test-vasnprintf-big.c:131: assertion 'errno == ENOMEM' failed
FAIL test-vasnprintf-big (exit status: 134)

So, here's the vasnprintf update that makes all these tests work.


2024-06-19  Bruno Haible  <bruno@clisp.org>

        ulc-asnprintf tests: Add test of %U, %s directives with large arguments.
        * tests/unistdio/test-ulc-asnprintf-big.c: New file, based on
        tests/test-vasnprintf-big.c.
        * modules/unistdio/ulc-asnprintf-extra-tests: New file.
        * modules/unistdio/ulc-asnprintf-tests (Depends-on): Depend on it.

        u8-asnprintf tests: Add test of %U, %s directives with large arguments.
        * tests/unistdio/test-u8-asnprintf-big.c: New file, based on
        tests/test-vasnprintf-big.c.
        * modules/unistdio/u8-asnprintf-extra-tests: New file.
        * modules/unistdio/u8-asnprintf-tests (Depends-on): Depend on it.

        vasnprintf tests: Add test of %s directive with large arguments.
        * tests/test-vasnprintf-big.c: New file.
        * modules/vasnprintf-extra-tests: New file.
        * modules/vasnprintf-tests (Depends-on): Depend on it.

        vasnprintf, u*-vasnprintf: Support string arguments longer than 2 GiB.
        * lib/vasnprintf.c: Include <stdint.h>.
        (VASNPRINTF): In 64-bit builds, handle the %s directive ourselves.
        (local_strnlen): Adjust #if condition.
        * modules/unistdio/u8-vasnprintf (Depends-on): Add stdint.
        * modules/unistdio/u8-u8-vasnprintf (Depends-on): Likewise.
        * modules/unistdio/u16-vasnprintf (Depends-on): Likewise.
        * modules/unistdio/u16-u16-vasnprintf (Depends-on): Likewise.
        * modules/unistdio/u32-vasnprintf (Depends-on): Likewise.
        * modules/unistdio/u32-u32-vasnprintf (Depends-on): Likewise.
        * modules/unistdio/ulc-vasnprintf (Depends-on): Likewise.

Attachment: 0001-vasnprintf-u-vasnprintf-Support-string-arguments-lon.patch
Description: Text Data

Attachment: 0002-vasnprintf-tests-Add-test-of-s-directive-with-large-.patch
Description: Text Data

Attachment: 0003-u8-asnprintf-tests-Add-test-of-U-s-directives-with-l.patch
Description: Text Data

Attachment: 0004-ulc-asnprintf-tests-Add-test-of-U-s-directives-with-.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]