xref: /aosp_15_r20/external/zlib/patches/0005-infcover-gtest.patch (revision 86ee64e75fa5f8bce2c8c356138035642429cd05)
1*86ee64e7SAndroid Build Coastguard WorkerFrom 409594639f15d825202971db7a275023e05772ff Mon Sep 17 00:00:00 2001
2*86ee64e7SAndroid Build Coastguard WorkerFrom: Adenilson Cavalcanti <[email protected]>
3*86ee64e7SAndroid Build Coastguard WorkerDate: Tue, 28 Apr 2020 10:48:01 -0700
4*86ee64e7SAndroid Build Coastguard WorkerSubject: [PATCH] Local Changes:   - make C tests build as C++ code so we can
5*86ee64e7SAndroid Build Coastguard Worker use gtest.   - use gtest EXPECT_TRUE instead of C assert.   - replace C
6*86ee64e7SAndroid Build Coastguard Worker streams for C++ (portability issues).
7*86ee64e7SAndroid Build Coastguard Worker
8*86ee64e7SAndroid Build Coastguard Worker---
9*86ee64e7SAndroid Build Coastguard Worker test/infcover.c | 167 ++++++++++++++++++++++++++----------------------
10*86ee64e7SAndroid Build Coastguard Worker 1 file changed, 90 insertions(+), 77 deletions(-)
11*86ee64e7SAndroid Build Coastguard Worker
12*86ee64e7SAndroid Build Coastguard Workerdiff --git a/test/infcover.c b/test/infcover.c
13*86ee64e7SAndroid Build Coastguard Workerindex 2be0164..a8c51c7 100644
14*86ee64e7SAndroid Build Coastguard Worker--- a/test/infcover.c
15*86ee64e7SAndroid Build Coastguard Worker+++ b/test/infcover.c
16*86ee64e7SAndroid Build Coastguard Worker@@ -4,11 +4,12 @@
17*86ee64e7SAndroid Build Coastguard Worker  */
18*86ee64e7SAndroid Build Coastguard Worker
19*86ee64e7SAndroid Build Coastguard Worker /* to use, do: ./configure --cover && make cover */
20*86ee64e7SAndroid Build Coastguard Worker-
21*86ee64e7SAndroid Build Coastguard Worker+// clang-format off
22*86ee64e7SAndroid Build Coastguard Worker+#include "infcover.h"
23*86ee64e7SAndroid Build Coastguard Worker #include <stdio.h>
24*86ee64e7SAndroid Build Coastguard Worker #include <stdlib.h>
25*86ee64e7SAndroid Build Coastguard Worker #include <string.h>
26*86ee64e7SAndroid Build Coastguard Worker-#include <assert.h>
27*86ee64e7SAndroid Build Coastguard Worker+
28*86ee64e7SAndroid Build Coastguard Worker #include "zlib.h"
29*86ee64e7SAndroid Build Coastguard Worker
30*86ee64e7SAndroid Build Coastguard Worker /* get definition of internal structure so we can mess with it (see pull()),
31*86ee64e7SAndroid Build Coastguard Worker@@ -17,8 +18,22 @@
32*86ee64e7SAndroid Build Coastguard Worker #include "inftrees.h"
33*86ee64e7SAndroid Build Coastguard Worker #include "inflate.h"
34*86ee64e7SAndroid Build Coastguard Worker
35*86ee64e7SAndroid Build Coastguard Worker+/* XXX: use C++ streams instead of printf/fputs/etc due to portability
36*86ee64e7SAndroid Build Coastguard Worker+ * as type sizes can vary between platforms.
37*86ee64e7SAndroid Build Coastguard Worker+ */
38*86ee64e7SAndroid Build Coastguard Worker+#include <iostream>
39*86ee64e7SAndroid Build Coastguard Worker #define local static
40*86ee64e7SAndroid Build Coastguard Worker
41*86ee64e7SAndroid Build Coastguard Worker+/* XXX: hacking C assert and plugging into GTest. */
42*86ee64e7SAndroid Build Coastguard Worker+#include "gtest.h"
43*86ee64e7SAndroid Build Coastguard Worker+#if defined(assert)
44*86ee64e7SAndroid Build Coastguard Worker+#undef assert
45*86ee64e7SAndroid Build Coastguard Worker+#define assert EXPECT_TRUE
46*86ee64e7SAndroid Build Coastguard Worker+#endif
47*86ee64e7SAndroid Build Coastguard Worker+
48*86ee64e7SAndroid Build Coastguard Worker+/* XXX: handle what is a reserved word in C++. */
49*86ee64e7SAndroid Build Coastguard Worker+#define try try_f
50*86ee64e7SAndroid Build Coastguard Worker+
51*86ee64e7SAndroid Build Coastguard Worker /* -- memory tracking routines -- */
52*86ee64e7SAndroid Build Coastguard Worker
53*86ee64e7SAndroid Build Coastguard Worker /*
54*86ee64e7SAndroid Build Coastguard Worker@@ -72,7 +87,7 @@ local void *mem_alloc(void *mem, unsigned count, unsigned size)
55*86ee64e7SAndroid Build Coastguard Worker {
56*86ee64e7SAndroid Build Coastguard Worker     void *ptr;
57*86ee64e7SAndroid Build Coastguard Worker     struct mem_item *item;
58*86ee64e7SAndroid Build Coastguard Worker-    struct mem_zone *zone = mem;
59*86ee64e7SAndroid Build Coastguard Worker+    struct mem_zone *zone = static_cast<struct mem_zone *>(mem);
60*86ee64e7SAndroid Build Coastguard Worker     size_t len = count * (size_t)size;
61*86ee64e7SAndroid Build Coastguard Worker
62*86ee64e7SAndroid Build Coastguard Worker     /* induced allocation failure */
63*86ee64e7SAndroid Build Coastguard Worker@@ -87,7 +102,7 @@ local void *mem_alloc(void *mem, unsigned count, unsigned size)
64*86ee64e7SAndroid Build Coastguard Worker     memset(ptr, 0xa5, len);
65*86ee64e7SAndroid Build Coastguard Worker
66*86ee64e7SAndroid Build Coastguard Worker     /* create a new item for the list */
67*86ee64e7SAndroid Build Coastguard Worker-    item = malloc(sizeof(struct mem_item));
68*86ee64e7SAndroid Build Coastguard Worker+    item = static_cast<struct mem_item *>(malloc(sizeof(struct mem_item)));
69*86ee64e7SAndroid Build Coastguard Worker     if (item == NULL) {
70*86ee64e7SAndroid Build Coastguard Worker         free(ptr);
71*86ee64e7SAndroid Build Coastguard Worker         return NULL;
72*86ee64e7SAndroid Build Coastguard Worker@@ -112,7 +127,7 @@ local void *mem_alloc(void *mem, unsigned count, unsigned size)
73*86ee64e7SAndroid Build Coastguard Worker local void mem_free(void *mem, void *ptr)
74*86ee64e7SAndroid Build Coastguard Worker {
75*86ee64e7SAndroid Build Coastguard Worker     struct mem_item *item, *next;
76*86ee64e7SAndroid Build Coastguard Worker-    struct mem_zone *zone = mem;
77*86ee64e7SAndroid Build Coastguard Worker+    struct mem_zone *zone = static_cast<struct mem_zone *>(mem);
78*86ee64e7SAndroid Build Coastguard Worker
79*86ee64e7SAndroid Build Coastguard Worker     /* if no zone, just do a free */
80*86ee64e7SAndroid Build Coastguard Worker     if (zone == NULL) {
81*86ee64e7SAndroid Build Coastguard Worker@@ -159,7 +174,7 @@ local void mem_setup(z_stream *strm)
82*86ee64e7SAndroid Build Coastguard Worker {
83*86ee64e7SAndroid Build Coastguard Worker     struct mem_zone *zone;
84*86ee64e7SAndroid Build Coastguard Worker
85*86ee64e7SAndroid Build Coastguard Worker-    zone = malloc(sizeof(struct mem_zone));
86*86ee64e7SAndroid Build Coastguard Worker+    zone = static_cast<struct mem_zone *>(malloc(sizeof(struct mem_zone)));
87*86ee64e7SAndroid Build Coastguard Worker     assert(zone != NULL);
88*86ee64e7SAndroid Build Coastguard Worker     zone->first = NULL;
89*86ee64e7SAndroid Build Coastguard Worker     zone->total = 0;
90*86ee64e7SAndroid Build Coastguard Worker@@ -175,33 +190,33 @@ local void mem_setup(z_stream *strm)
91*86ee64e7SAndroid Build Coastguard Worker /* set a limit on the total memory allocation, or 0 to remove the limit */
92*86ee64e7SAndroid Build Coastguard Worker local void mem_limit(z_stream *strm, size_t limit)
93*86ee64e7SAndroid Build Coastguard Worker {
94*86ee64e7SAndroid Build Coastguard Worker-    struct mem_zone *zone = strm->opaque;
95*86ee64e7SAndroid Build Coastguard Worker+    struct mem_zone *zone = static_cast<struct mem_zone *>(strm->opaque);
96*86ee64e7SAndroid Build Coastguard Worker
97*86ee64e7SAndroid Build Coastguard Worker     zone->limit = limit;
98*86ee64e7SAndroid Build Coastguard Worker }
99*86ee64e7SAndroid Build Coastguard Worker
100*86ee64e7SAndroid Build Coastguard Worker /* show the current total requested allocations in bytes */
101*86ee64e7SAndroid Build Coastguard Worker-local void mem_used(z_stream *strm, char *prefix)
102*86ee64e7SAndroid Build Coastguard Worker+local void mem_used(z_stream *strm, const char *prefix)
103*86ee64e7SAndroid Build Coastguard Worker {
104*86ee64e7SAndroid Build Coastguard Worker-    struct mem_zone *zone = strm->opaque;
105*86ee64e7SAndroid Build Coastguard Worker+    struct mem_zone *zone = static_cast<struct mem_zone *>(strm->opaque);
106*86ee64e7SAndroid Build Coastguard Worker
107*86ee64e7SAndroid Build Coastguard Worker-    fprintf(stderr, "%s: %lu allocated\n", prefix, zone->total);
108*86ee64e7SAndroid Build Coastguard Worker+    std::cout << prefix << ": " << zone->total << " allocated" << std::endl;
109*86ee64e7SAndroid Build Coastguard Worker }
110*86ee64e7SAndroid Build Coastguard Worker
111*86ee64e7SAndroid Build Coastguard Worker /* show the high water allocation in bytes */
112*86ee64e7SAndroid Build Coastguard Worker-local void mem_high(z_stream *strm, char *prefix)
113*86ee64e7SAndroid Build Coastguard Worker+local void mem_high(z_stream *strm, const char *prefix)
114*86ee64e7SAndroid Build Coastguard Worker {
115*86ee64e7SAndroid Build Coastguard Worker-    struct mem_zone *zone = strm->opaque;
116*86ee64e7SAndroid Build Coastguard Worker+    struct mem_zone *zone = static_cast<struct mem_zone *>(strm->opaque);
117*86ee64e7SAndroid Build Coastguard Worker
118*86ee64e7SAndroid Build Coastguard Worker-    fprintf(stderr, "%s: %lu high water mark\n", prefix, zone->highwater);
119*86ee64e7SAndroid Build Coastguard Worker+    std::cout << prefix << ": " << zone->highwater << " high water mark" << std::endl;
120*86ee64e7SAndroid Build Coastguard Worker }
121*86ee64e7SAndroid Build Coastguard Worker
122*86ee64e7SAndroid Build Coastguard Worker /* release the memory allocation zone -- if there are any surprises, notify */
123*86ee64e7SAndroid Build Coastguard Worker-local void mem_done(z_stream *strm, char *prefix)
124*86ee64e7SAndroid Build Coastguard Worker+local void mem_done(z_stream *strm, const char *prefix)
125*86ee64e7SAndroid Build Coastguard Worker {
126*86ee64e7SAndroid Build Coastguard Worker     int count = 0;
127*86ee64e7SAndroid Build Coastguard Worker     struct mem_item *item, *next;
128*86ee64e7SAndroid Build Coastguard Worker-    struct mem_zone *zone = strm->opaque;
129*86ee64e7SAndroid Build Coastguard Worker+    struct mem_zone *zone = static_cast<struct mem_zone *>(strm->opaque);
130*86ee64e7SAndroid Build Coastguard Worker
131*86ee64e7SAndroid Build Coastguard Worker     /* show high water mark */
132*86ee64e7SAndroid Build Coastguard Worker     mem_high(strm, prefix);
133*86ee64e7SAndroid Build Coastguard Worker@@ -218,13 +233,20 @@ local void mem_done(z_stream *strm, char *prefix)
134*86ee64e7SAndroid Build Coastguard Worker
135*86ee64e7SAndroid Build Coastguard Worker     /* issue alerts about anything unexpected */
136*86ee64e7SAndroid Build Coastguard Worker     if (count || zone->total)
137*86ee64e7SAndroid Build Coastguard Worker-        fprintf(stderr, "** %s: %lu bytes in %d blocks not freed\n",
138*86ee64e7SAndroid Build Coastguard Worker-                prefix, zone->total, count);
139*86ee64e7SAndroid Build Coastguard Worker+        std::cout << "** " << prefix << ": "
140*86ee64e7SAndroid Build Coastguard Worker+                  << zone->total << " bytes in "
141*86ee64e7SAndroid Build Coastguard Worker+                  << count << " blocks not freed"
142*86ee64e7SAndroid Build Coastguard Worker+                  << std::endl;
143*86ee64e7SAndroid Build Coastguard Worker+
144*86ee64e7SAndroid Build Coastguard Worker     if (zone->notlifo)
145*86ee64e7SAndroid Build Coastguard Worker-        fprintf(stderr, "** %s: %d frees not LIFO\n", prefix, zone->notlifo);
146*86ee64e7SAndroid Build Coastguard Worker+        std::cout << "** " << prefix << ": "
147*86ee64e7SAndroid Build Coastguard Worker+                  << zone->notlifo << " frees not LIFO"
148*86ee64e7SAndroid Build Coastguard Worker+                  << std::endl;
149*86ee64e7SAndroid Build Coastguard Worker+
150*86ee64e7SAndroid Build Coastguard Worker     if (zone->rogue)
151*86ee64e7SAndroid Build Coastguard Worker-        fprintf(stderr, "** %s: %d frees not recognized\n",
152*86ee64e7SAndroid Build Coastguard Worker-                prefix, zone->rogue);
153*86ee64e7SAndroid Build Coastguard Worker+        std::cout << "** " << prefix << ": "
154*86ee64e7SAndroid Build Coastguard Worker+                  << zone->rogue << " frees not recognized"
155*86ee64e7SAndroid Build Coastguard Worker+                  << std::endl;
156*86ee64e7SAndroid Build Coastguard Worker
157*86ee64e7SAndroid Build Coastguard Worker     /* free the zone and delete from the stream */
158*86ee64e7SAndroid Build Coastguard Worker     free(zone);
159*86ee64e7SAndroid Build Coastguard Worker@@ -247,7 +269,7 @@ local unsigned char *h2b(const char *hex, unsigned *len)
160*86ee64e7SAndroid Build Coastguard Worker     unsigned char *in, *re;
161*86ee64e7SAndroid Build Coastguard Worker     unsigned next, val;
162*86ee64e7SAndroid Build Coastguard Worker
163*86ee64e7SAndroid Build Coastguard Worker-    in = malloc((strlen(hex) + 1) >> 1);
164*86ee64e7SAndroid Build Coastguard Worker+    in = static_cast<unsigned char *>(malloc((strlen(hex) + 1) >> 1));
165*86ee64e7SAndroid Build Coastguard Worker     if (in == NULL)
166*86ee64e7SAndroid Build Coastguard Worker         return NULL;
167*86ee64e7SAndroid Build Coastguard Worker     next = 0;
168*86ee64e7SAndroid Build Coastguard Worker@@ -268,7 +290,7 @@ local unsigned char *h2b(const char *hex, unsigned *len)
169*86ee64e7SAndroid Build Coastguard Worker     } while (*hex++);       /* go through the loop with the terminating null */
170*86ee64e7SAndroid Build Coastguard Worker     if (len != NULL)
171*86ee64e7SAndroid Build Coastguard Worker         *len = next;
172*86ee64e7SAndroid Build Coastguard Worker-    re = realloc(in, next);
173*86ee64e7SAndroid Build Coastguard Worker+    re = static_cast<unsigned char *>(realloc(in, next));
174*86ee64e7SAndroid Build Coastguard Worker     return re == NULL ? in : re;
175*86ee64e7SAndroid Build Coastguard Worker }
176*86ee64e7SAndroid Build Coastguard Worker
177*86ee64e7SAndroid Build Coastguard Worker@@ -281,7 +303,7 @@ local unsigned char *h2b(const char *hex, unsigned *len)
178*86ee64e7SAndroid Build Coastguard Worker    header information is collected with inflateGetHeader().  If a zlib stream
179*86ee64e7SAndroid Build Coastguard Worker    is looking for a dictionary, then an empty dictionary is provided.
180*86ee64e7SAndroid Build Coastguard Worker    inflate() is run until all of the input data is consumed. */
181*86ee64e7SAndroid Build Coastguard Worker-local void inf(char *hex, char *what, unsigned step, int win, unsigned len,
182*86ee64e7SAndroid Build Coastguard Worker+local void inf(const char *hex, const char *what, unsigned step, int win, unsigned len,
183*86ee64e7SAndroid Build Coastguard Worker                int err)
184*86ee64e7SAndroid Build Coastguard Worker {
185*86ee64e7SAndroid Build Coastguard Worker     int ret;
186*86ee64e7SAndroid Build Coastguard Worker@@ -298,7 +320,7 @@ local void inf(char *hex, char *what, unsigned step, int win, unsigned len,
187*86ee64e7SAndroid Build Coastguard Worker         mem_done(&strm, what);
188*86ee64e7SAndroid Build Coastguard Worker         return;
189*86ee64e7SAndroid Build Coastguard Worker     }
190*86ee64e7SAndroid Build Coastguard Worker-    out = malloc(len);                          assert(out != NULL);
191*86ee64e7SAndroid Build Coastguard Worker+    out = static_cast<unsigned char *>(malloc(len));                          assert(out != NULL);
192*86ee64e7SAndroid Build Coastguard Worker     if (win == 47) {
193*86ee64e7SAndroid Build Coastguard Worker         head.extra = out;
194*86ee64e7SAndroid Build Coastguard Worker         head.extra_max = len;
195*86ee64e7SAndroid Build Coastguard Worker@@ -347,7 +369,7 @@ local void inf(char *hex, char *what, unsigned step, int win, unsigned len,
196*86ee64e7SAndroid Build Coastguard Worker }
197*86ee64e7SAndroid Build Coastguard Worker
198*86ee64e7SAndroid Build Coastguard Worker /* cover all of the lines in inflate.c up to inflate() */
199*86ee64e7SAndroid Build Coastguard Worker-local void cover_support(void)
200*86ee64e7SAndroid Build Coastguard Worker+void cover_support(void)
201*86ee64e7SAndroid Build Coastguard Worker {
202*86ee64e7SAndroid Build Coastguard Worker     int ret;
203*86ee64e7SAndroid Build Coastguard Worker     z_stream strm;
204*86ee64e7SAndroid Build Coastguard Worker@@ -381,11 +403,11 @@ local void cover_support(void)
205*86ee64e7SAndroid Build Coastguard Worker     strm.next_in = Z_NULL;
206*86ee64e7SAndroid Build Coastguard Worker     ret = inflateInit(&strm);                   assert(ret == Z_OK);
207*86ee64e7SAndroid Build Coastguard Worker     ret = inflateEnd(&strm);                    assert(ret == Z_OK);
208*86ee64e7SAndroid Build Coastguard Worker-    fputs("inflate built-in memory routines\n", stderr);
209*86ee64e7SAndroid Build Coastguard Worker+    std::cout << "inflate built-in memory routines" << std::endl;;
210*86ee64e7SAndroid Build Coastguard Worker }
211*86ee64e7SAndroid Build Coastguard Worker
212*86ee64e7SAndroid Build Coastguard Worker /* cover all inflate() header and trailer cases and code after inflate() */
213*86ee64e7SAndroid Build Coastguard Worker-local void cover_wrap(void)
214*86ee64e7SAndroid Build Coastguard Worker+void cover_wrap(void)
215*86ee64e7SAndroid Build Coastguard Worker {
216*86ee64e7SAndroid Build Coastguard Worker     int ret;
217*86ee64e7SAndroid Build Coastguard Worker     z_stream strm, copy;
218*86ee64e7SAndroid Build Coastguard Worker@@ -394,7 +416,7 @@ local void cover_wrap(void)
219*86ee64e7SAndroid Build Coastguard Worker     ret = inflate(Z_NULL, 0);                   assert(ret == Z_STREAM_ERROR);
220*86ee64e7SAndroid Build Coastguard Worker     ret = inflateEnd(Z_NULL);                   assert(ret == Z_STREAM_ERROR);
221*86ee64e7SAndroid Build Coastguard Worker     ret = inflateCopy(Z_NULL, Z_NULL);          assert(ret == Z_STREAM_ERROR);
222*86ee64e7SAndroid Build Coastguard Worker-    fputs("inflate bad parameters\n", stderr);
223*86ee64e7SAndroid Build Coastguard Worker+    std::cout << "inflate bad parameters" << std::endl;
224*86ee64e7SAndroid Build Coastguard Worker
225*86ee64e7SAndroid Build Coastguard Worker     inf("1f 8b 0 0", "bad gzip method", 0, 31, 0, Z_DATA_ERROR);
226*86ee64e7SAndroid Build Coastguard Worker     inf("1f 8b 8 80", "bad gzip flags", 0, 31, 0, Z_DATA_ERROR);
227*86ee64e7SAndroid Build Coastguard Worker@@ -415,9 +437,9 @@ local void cover_wrap(void)
228*86ee64e7SAndroid Build Coastguard Worker     strm.next_in = Z_NULL;
229*86ee64e7SAndroid Build Coastguard Worker     ret = inflateInit2(&strm, -8);
230*86ee64e7SAndroid Build Coastguard Worker     strm.avail_in = 2;
231*86ee64e7SAndroid Build Coastguard Worker-    strm.next_in = (void *)"\x63";
232*86ee64e7SAndroid Build Coastguard Worker+    strm.next_in = (Bytef *)"\x63";
233*86ee64e7SAndroid Build Coastguard Worker     strm.avail_out = 1;
234*86ee64e7SAndroid Build Coastguard Worker-    strm.next_out = (void *)&ret;
235*86ee64e7SAndroid Build Coastguard Worker+    strm.next_out = (Bytef *)&ret;
236*86ee64e7SAndroid Build Coastguard Worker     mem_limit(&strm, 1);
237*86ee64e7SAndroid Build Coastguard Worker     ret = inflate(&strm, Z_NO_FLUSH);           assert(ret == Z_MEM_ERROR);
238*86ee64e7SAndroid Build Coastguard Worker     ret = inflate(&strm, Z_NO_FLUSH);           assert(ret == Z_MEM_ERROR);
239*86ee64e7SAndroid Build Coastguard Worker@@ -428,11 +450,11 @@ local void cover_wrap(void)
240*86ee64e7SAndroid Build Coastguard Worker     mem_limit(&strm, (sizeof(struct inflate_state) << 1) + 256);
241*86ee64e7SAndroid Build Coastguard Worker     ret = inflatePrime(&strm, 16, 0);           assert(ret == Z_OK);
242*86ee64e7SAndroid Build Coastguard Worker     strm.avail_in = 2;
243*86ee64e7SAndroid Build Coastguard Worker-    strm.next_in = (void *)"\x80";
244*86ee64e7SAndroid Build Coastguard Worker+    strm.next_in = (Bytef *)"\x80";
245*86ee64e7SAndroid Build Coastguard Worker     ret = inflateSync(&strm);                   assert(ret == Z_DATA_ERROR);
246*86ee64e7SAndroid Build Coastguard Worker     ret = inflate(&strm, Z_NO_FLUSH);           assert(ret == Z_STREAM_ERROR);
247*86ee64e7SAndroid Build Coastguard Worker     strm.avail_in = 4;
248*86ee64e7SAndroid Build Coastguard Worker-    strm.next_in = (void *)"\0\0\xff\xff";
249*86ee64e7SAndroid Build Coastguard Worker+    strm.next_in = (Bytef *)"\0\0\xff\xff";
250*86ee64e7SAndroid Build Coastguard Worker     ret = inflateSync(&strm);                   assert(ret == Z_OK);
251*86ee64e7SAndroid Build Coastguard Worker     (void)inflateSyncPoint(&strm);
252*86ee64e7SAndroid Build Coastguard Worker     ret = inflateCopy(&copy, &strm);            assert(ret == Z_MEM_ERROR);
253*86ee64e7SAndroid Build Coastguard Worker@@ -454,7 +476,7 @@ local unsigned pull(void *desc, unsigned char **buf)
254*86ee64e7SAndroid Build Coastguard Worker         next = 0;
255*86ee64e7SAndroid Build Coastguard Worker         return 0;   /* no input (already provided at next_in) */
256*86ee64e7SAndroid Build Coastguard Worker     }
257*86ee64e7SAndroid Build Coastguard Worker-    state = (void *)((z_stream *)desc)->state;
258*86ee64e7SAndroid Build Coastguard Worker+    state = reinterpret_cast<struct inflate_state *>(((z_stream *)desc)->state);
259*86ee64e7SAndroid Build Coastguard Worker     if (state != Z_NULL)
260*86ee64e7SAndroid Build Coastguard Worker         state->mode = SYNC;     /* force an otherwise impossible situation */
261*86ee64e7SAndroid Build Coastguard Worker     return next < sizeof(dat) ? (*buf = dat + next++, 1) : 0;
262*86ee64e7SAndroid Build Coastguard Worker@@ -467,7 +489,7 @@ local int push(void *desc, unsigned char *buf, unsigned len)
263*86ee64e7SAndroid Build Coastguard Worker }
264*86ee64e7SAndroid Build Coastguard Worker
265*86ee64e7SAndroid Build Coastguard Worker /* cover inflateBack() up to common deflate data cases and after those */
266*86ee64e7SAndroid Build Coastguard Worker-local void cover_back(void)
267*86ee64e7SAndroid Build Coastguard Worker+void cover_back(void)
268*86ee64e7SAndroid Build Coastguard Worker {
269*86ee64e7SAndroid Build Coastguard Worker     int ret;
270*86ee64e7SAndroid Build Coastguard Worker     z_stream strm;
271*86ee64e7SAndroid Build Coastguard Worker@@ -479,17 +501,17 @@ local void cover_back(void)
272*86ee64e7SAndroid Build Coastguard Worker     ret = inflateBack(Z_NULL, Z_NULL, Z_NULL, Z_NULL, Z_NULL);
273*86ee64e7SAndroid Build Coastguard Worker                                                 assert(ret == Z_STREAM_ERROR);
274*86ee64e7SAndroid Build Coastguard Worker     ret = inflateBackEnd(Z_NULL);               assert(ret == Z_STREAM_ERROR);
275*86ee64e7SAndroid Build Coastguard Worker-    fputs("inflateBack bad parameters\n", stderr);
276*86ee64e7SAndroid Build Coastguard Worker+    std::cout << "inflateBack bad parameters" << std::endl;;
277*86ee64e7SAndroid Build Coastguard Worker
278*86ee64e7SAndroid Build Coastguard Worker     mem_setup(&strm);
279*86ee64e7SAndroid Build Coastguard Worker     ret = inflateBackInit(&strm, 15, win);      assert(ret == Z_OK);
280*86ee64e7SAndroid Build Coastguard Worker     strm.avail_in = 2;
281*86ee64e7SAndroid Build Coastguard Worker-    strm.next_in = (void *)"\x03";
282*86ee64e7SAndroid Build Coastguard Worker+    strm.next_in = (Bytef *)"\x03";
283*86ee64e7SAndroid Build Coastguard Worker     ret = inflateBack(&strm, pull, Z_NULL, push, Z_NULL);
284*86ee64e7SAndroid Build Coastguard Worker                                                 assert(ret == Z_STREAM_END);
285*86ee64e7SAndroid Build Coastguard Worker         /* force output error */
286*86ee64e7SAndroid Build Coastguard Worker     strm.avail_in = 3;
287*86ee64e7SAndroid Build Coastguard Worker-    strm.next_in = (void *)"\x63\x00";
288*86ee64e7SAndroid Build Coastguard Worker+    strm.next_in = (Bytef *)"\x63\x00";
289*86ee64e7SAndroid Build Coastguard Worker     ret = inflateBack(&strm, pull, Z_NULL, push, &strm);
290*86ee64e7SAndroid Build Coastguard Worker                                                 assert(ret == Z_BUF_ERROR);
291*86ee64e7SAndroid Build Coastguard Worker         /* force mode error by mucking with state */
292*86ee64e7SAndroid Build Coastguard Worker@@ -500,11 +522,11 @@ local void cover_back(void)
293*86ee64e7SAndroid Build Coastguard Worker
294*86ee64e7SAndroid Build Coastguard Worker     ret = inflateBackInit(&strm, 15, win);      assert(ret == Z_OK);
295*86ee64e7SAndroid Build Coastguard Worker     ret = inflateBackEnd(&strm);                assert(ret == Z_OK);
296*86ee64e7SAndroid Build Coastguard Worker-    fputs("inflateBack built-in memory routines\n", stderr);
297*86ee64e7SAndroid Build Coastguard Worker+    std::cout << "inflateBack built-in memory routines" << std::endl;;
298*86ee64e7SAndroid Build Coastguard Worker }
299*86ee64e7SAndroid Build Coastguard Worker
300*86ee64e7SAndroid Build Coastguard Worker /* do a raw inflate of data in hexadecimal with both inflate and inflateBack */
301*86ee64e7SAndroid Build Coastguard Worker-local int try(char *hex, char *id, int err)
302*86ee64e7SAndroid Build Coastguard Worker+local int try(const char *hex, const char *id, int err)
303*86ee64e7SAndroid Build Coastguard Worker {
304*86ee64e7SAndroid Build Coastguard Worker     int ret;
305*86ee64e7SAndroid Build Coastguard Worker     unsigned len, size;
306*86ee64e7SAndroid Build Coastguard Worker@@ -518,11 +540,11 @@ local int try(char *hex, char *id, int err)
307*86ee64e7SAndroid Build Coastguard Worker
308*86ee64e7SAndroid Build Coastguard Worker     /* allocate work areas */
309*86ee64e7SAndroid Build Coastguard Worker     size = len << 3;
310*86ee64e7SAndroid Build Coastguard Worker-    out = malloc(size);
311*86ee64e7SAndroid Build Coastguard Worker+    out = static_cast<unsigned char *>(malloc(size));
312*86ee64e7SAndroid Build Coastguard Worker     assert(out != NULL);
313*86ee64e7SAndroid Build Coastguard Worker-    win = malloc(32768);
314*86ee64e7SAndroid Build Coastguard Worker+    win = static_cast<unsigned char *>(malloc(32768));
315*86ee64e7SAndroid Build Coastguard Worker     assert(win != NULL);
316*86ee64e7SAndroid Build Coastguard Worker-    prefix = malloc(strlen(id) + 6);
317*86ee64e7SAndroid Build Coastguard Worker+    prefix = static_cast<char *>(malloc(strlen(id) + 6));
318*86ee64e7SAndroid Build Coastguard Worker     assert(prefix != NULL);
319*86ee64e7SAndroid Build Coastguard Worker
320*86ee64e7SAndroid Build Coastguard Worker     /* first with inflate */
321*86ee64e7SAndroid Build Coastguard Worker@@ -578,7 +600,7 @@ local int try(char *hex, char *id, int err)
322*86ee64e7SAndroid Build Coastguard Worker }
323*86ee64e7SAndroid Build Coastguard Worker
324*86ee64e7SAndroid Build Coastguard Worker /* cover deflate data cases in both inflate() and inflateBack() */
325*86ee64e7SAndroid Build Coastguard Worker-local void cover_inflate(void)
326*86ee64e7SAndroid Build Coastguard Worker+void cover_inflate(void)
327*86ee64e7SAndroid Build Coastguard Worker {
328*86ee64e7SAndroid Build Coastguard Worker     try("0 0 0 0 0", "invalid stored block lengths", 1);
329*86ee64e7SAndroid Build Coastguard Worker     try("3 0", "fixed", 0);
330*86ee64e7SAndroid Build Coastguard Worker@@ -613,32 +635,33 @@ local void cover_inflate(void)
331*86ee64e7SAndroid Build Coastguard Worker     inf("63 18 5 40 c 0", "window wrap", 3, -8, 300, Z_OK);
332*86ee64e7SAndroid Build Coastguard Worker }
333*86ee64e7SAndroid Build Coastguard Worker
334*86ee64e7SAndroid Build Coastguard Worker+/* XXX(cavalcantii): fix linking error due inflate_table. */
335*86ee64e7SAndroid Build Coastguard Worker /* cover remaining lines in inftrees.c */
336*86ee64e7SAndroid Build Coastguard Worker-local void cover_trees(void)
337*86ee64e7SAndroid Build Coastguard Worker-{
338*86ee64e7SAndroid Build Coastguard Worker-    int ret;
339*86ee64e7SAndroid Build Coastguard Worker-    unsigned bits;
340*86ee64e7SAndroid Build Coastguard Worker-    unsigned short lens[16], work[16];
341*86ee64e7SAndroid Build Coastguard Worker-    code *next, table[ENOUGH_DISTS];
342*86ee64e7SAndroid Build Coastguard Worker-
343*86ee64e7SAndroid Build Coastguard Worker-    /* we need to call inflate_table() directly in order to manifest not-
344*86ee64e7SAndroid Build Coastguard Worker-       enough errors, since zlib insures that enough is always enough */
345*86ee64e7SAndroid Build Coastguard Worker-    for (bits = 0; bits < 15; bits++)
346*86ee64e7SAndroid Build Coastguard Worker-        lens[bits] = (unsigned short)(bits + 1);
347*86ee64e7SAndroid Build Coastguard Worker-    lens[15] = 15;
348*86ee64e7SAndroid Build Coastguard Worker-    next = table;
349*86ee64e7SAndroid Build Coastguard Worker-    bits = 15;
350*86ee64e7SAndroid Build Coastguard Worker-    ret = inflate_table(DISTS, lens, 16, &next, &bits, work);
351*86ee64e7SAndroid Build Coastguard Worker-                                                assert(ret == 1);
352*86ee64e7SAndroid Build Coastguard Worker-    next = table;
353*86ee64e7SAndroid Build Coastguard Worker-    bits = 1;
354*86ee64e7SAndroid Build Coastguard Worker-    ret = inflate_table(DISTS, lens, 16, &next, &bits, work);
355*86ee64e7SAndroid Build Coastguard Worker-                                                assert(ret == 1);
356*86ee64e7SAndroid Build Coastguard Worker-    fputs("inflate_table not enough errors\n", stderr);
357*86ee64e7SAndroid Build Coastguard Worker-}
358*86ee64e7SAndroid Build Coastguard Worker+/* void cover_trees(void) */
359*86ee64e7SAndroid Build Coastguard Worker+/* { */
360*86ee64e7SAndroid Build Coastguard Worker+/*     int ret; */
361*86ee64e7SAndroid Build Coastguard Worker+/*     unsigned bits; */
362*86ee64e7SAndroid Build Coastguard Worker+/*     unsigned short lens[16], work[16]; */
363*86ee64e7SAndroid Build Coastguard Worker+/*     code *next, table[ENOUGH_DISTS]; */
364*86ee64e7SAndroid Build Coastguard Worker+
365*86ee64e7SAndroid Build Coastguard Worker+/*     /\* we need to call inflate_table() directly in order to manifest not- */
366*86ee64e7SAndroid Build Coastguard Worker+/*        enough errors, since zlib insures that enough is always enough *\/ */
367*86ee64e7SAndroid Build Coastguard Worker+/*     for (bits = 0; bits < 15; bits++) */
368*86ee64e7SAndroid Build Coastguard Worker+/*         lens[bits] = (unsigned short)(bits + 1); */
369*86ee64e7SAndroid Build Coastguard Worker+/*     lens[15] = 15; */
370*86ee64e7SAndroid Build Coastguard Worker+/*     next = table; */
371*86ee64e7SAndroid Build Coastguard Worker+/*     bits = 15; */
372*86ee64e7SAndroid Build Coastguard Worker+/*     ret = inflate_table(DISTS, lens, 16, &next, &bits, work); */
373*86ee64e7SAndroid Build Coastguard Worker+/*                                                 assert(ret == 1); */
374*86ee64e7SAndroid Build Coastguard Worker+/*     next = table; */
375*86ee64e7SAndroid Build Coastguard Worker+/*     bits = 1; */
376*86ee64e7SAndroid Build Coastguard Worker+/*     ret = inflate_table(DISTS, lens, 16, &next, &bits, work); */
377*86ee64e7SAndroid Build Coastguard Worker+/*                                                 assert(ret == 1); */
378*86ee64e7SAndroid Build Coastguard Worker+/*     fputs("inflate_table not enough errors\n", stderr); */
379*86ee64e7SAndroid Build Coastguard Worker+/* } */
380*86ee64e7SAndroid Build Coastguard Worker
381*86ee64e7SAndroid Build Coastguard Worker /* cover remaining inffast.c decoding and window copying */
382*86ee64e7SAndroid Build Coastguard Worker-local void cover_fast(void)
383*86ee64e7SAndroid Build Coastguard Worker+void cover_fast(void)
384*86ee64e7SAndroid Build Coastguard Worker {
385*86ee64e7SAndroid Build Coastguard Worker     inf("e5 e0 81 ad 6d cb b2 2c c9 01 1e 59 63 ae 7d ee fb 4d fd b5 35 41 68"
386*86ee64e7SAndroid Build Coastguard Worker         " ff 7f 0f 0 0 0", "fast length extra bits", 0, -8, 258, Z_DATA_ERROR);
387*86ee64e7SAndroid Build Coastguard Worker@@ -658,14 +681,4 @@ local void cover_fast(void)
388*86ee64e7SAndroid Build Coastguard Worker         Z_STREAM_END);
389*86ee64e7SAndroid Build Coastguard Worker }
390*86ee64e7SAndroid Build Coastguard Worker
391*86ee64e7SAndroid Build Coastguard Worker-int main(void)
392*86ee64e7SAndroid Build Coastguard Worker-{
393*86ee64e7SAndroid Build Coastguard Worker-    fprintf(stderr, "%s\n", zlibVersion());
394*86ee64e7SAndroid Build Coastguard Worker-    cover_support();
395*86ee64e7SAndroid Build Coastguard Worker-    cover_wrap();
396*86ee64e7SAndroid Build Coastguard Worker-    cover_back();
397*86ee64e7SAndroid Build Coastguard Worker-    cover_inflate();
398*86ee64e7SAndroid Build Coastguard Worker-    cover_trees();
399*86ee64e7SAndroid Build Coastguard Worker-    cover_fast();
400*86ee64e7SAndroid Build Coastguard Worker-    return 0;
401*86ee64e7SAndroid Build Coastguard Worker-}
402*86ee64e7SAndroid Build Coastguard Worker+// clang-format on
403*86ee64e7SAndroid Build Coastguard Worker--
404*86ee64e7SAndroid Build Coastguard Worker2.21.1 (Apple Git-122.3)
405*86ee64e7SAndroid Build Coastguard Worker
406