This source file includes following definitions.
- __libc_scratch_buffer_set_array_size
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #ifndef _LIBC
20 # include <libc-config.h>
21 #endif
22
23 #include <scratch_buffer.h>
24 #include <errno.h>
25 #include <limits.h>
26
27 bool
28 __libc_scratch_buffer_set_array_size (struct scratch_buffer *buffer,
29 size_t nelem, size_t size)
30 {
31 size_t new_length = nelem * size;
32
33
34 if ((nelem | size) >> (sizeof (size_t) * CHAR_BIT / 2) != 0
35 && nelem != 0 && size != new_length / nelem)
36 {
37
38
39 scratch_buffer_free (buffer);
40 scratch_buffer_init (buffer);
41 __set_errno (ENOMEM);
42 return false;
43 }
44
45 if (new_length <= buffer->length)
46 return true;
47
48
49 scratch_buffer_free (buffer);
50
51 char *new_ptr = malloc (new_length);
52 if (new_ptr == NULL)
53 {
54
55 scratch_buffer_init (buffer);
56 return false;
57 }
58
59
60 buffer->data = new_ptr;
61 buffer->length = new_length;
62 return true;
63 }
64 libc_hidden_def (__libc_scratch_buffer_set_array_size)