Git fork
1@@
2type T;
3T *dst_ptr;
4T *src_ptr;
5expression n;
6@@
7- memcpy(dst_ptr, src_ptr, (n) * \( sizeof(T)
8- \| sizeof(*(dst_ptr))
9- \| sizeof(*(src_ptr))
10- \| sizeof(dst_ptr[...])
11- \| sizeof(src_ptr[...])
12- \) )
13+ COPY_ARRAY(dst_ptr, src_ptr, n)
14
15@@
16type T;
17T *dst_ptr;
18T[] src_arr;
19expression n;
20@@
21- memcpy(dst_ptr, src_arr, (n) * \( sizeof(T)
22- \| sizeof(*(dst_ptr))
23- \| sizeof(*(src_arr))
24- \| sizeof(dst_ptr[...])
25- \| sizeof(src_arr[...])
26- \) )
27+ COPY_ARRAY(dst_ptr, src_arr, n)
28
29@@
30type T;
31T[] dst_arr;
32T *src_ptr;
33expression n;
34@@
35- memcpy(dst_arr, src_ptr, (n) * \( sizeof(T)
36- \| sizeof(*(dst_arr))
37- \| sizeof(*(src_ptr))
38- \| sizeof(dst_arr[...])
39- \| sizeof(src_ptr[...])
40- \) )
41+ COPY_ARRAY(dst_arr, src_ptr, n)
42
43@@
44type T;
45T[] dst_arr;
46T[] src_arr;
47expression n;
48@@
49- memcpy(dst_arr, src_arr, (n) * \( sizeof(T)
50- \| sizeof(*(dst_arr))
51- \| sizeof(*(src_arr))
52- \| sizeof(dst_arr[...])
53- \| sizeof(src_arr[...])
54- \) )
55+ COPY_ARRAY(dst_arr, src_arr, n)
56
57@@
58type T;
59T *dst;
60T *src;
61expression n;
62@@
63(
64- memmove(dst, src, (n) * sizeof(*dst));
65+ MOVE_ARRAY(dst, src, n);
66|
67- memmove(dst, src, (n) * sizeof(*src));
68+ MOVE_ARRAY(dst, src, n);
69|
70- memmove(dst, src, (n) * sizeof(T));
71+ MOVE_ARRAY(dst, src, n);
72)
73
74@@
75type T;
76T *ptr;
77expression n;
78@@
79- ptr = xmalloc((n) * sizeof(*ptr));
80+ ALLOC_ARRAY(ptr, n);
81
82@@
83type T;
84T *ptr;
85expression n;
86@@
87- ptr = xmalloc((n) * sizeof(T));
88+ ALLOC_ARRAY(ptr, n);
89
90@@
91type T;
92T *ptr;
93expression n != 1;
94@@
95- ptr = xcalloc(n, \( sizeof(*ptr) \| sizeof(T) \) )
96+ CALLOC_ARRAY(ptr, n)
97
98@@
99expression dst, src, n;
100@@
101-ALLOC_ARRAY(dst, n);
102-COPY_ARRAY(dst, src, n);
103+DUP_ARRAY(dst, src, n);