1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-07 06:43:00 +03:00

malloc: Add scratch_buffer_dupfree

It returns a copy of the buffer up to a defined size.  It will be used
on realpath sync with gnulib.
This commit is contained in:
Adhemerval Zanella
2020-12-28 09:50:23 -03:00
parent 47f4316095
commit 448a256359
5 changed files with 83 additions and 2 deletions

View File

@@ -16,7 +16,10 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
#include <array_length.h>
#include <scratch_buffer.h>
#include <support/check.h>
#include <support/support.h>
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
@@ -148,8 +151,27 @@ do_test (void)
&& array_size_must_fail (4, ((size_t)-1) / 4)))
return 1;
}
{
struct scratch_buffer buf;
scratch_buffer_init (&buf);
memset (buf.data, '@', buf.length);
size_t sizes[] = { 16, buf.length, buf.length + 16 };
for (int i = 0; i < array_length (sizes); i++)
{
/* The extra size is unitialized through realloc. */
size_t l = sizes[i] > buf.length ? sizes[i] : buf.length;
void *r = scratch_buffer_dupfree (&buf, l);
void *c = xmalloc (l);
memset (c, '@', l);
TEST_COMPARE_BLOB (r, l, buf.data, l);
free (r);
free (c);
}
scratch_buffer_free (&buf);
}
return 0;
}
#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"
#include <support/test-driver.c>