aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/analyzer/gzio-3.c
blob: 426683244ff45fc09f2be67c5fe272f7a9e6cde4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
typedef __SIZE_TYPE__ size_t;
typedef struct _IO_FILE FILE;
extern size_t fread(void *__restrict __ptr, size_t __size, size_t __n,
                    FILE *__restrict __stream);
typedef unsigned char Byte;
typedef unsigned int uInt;
typedef unsigned long uLong;

typedef struct z_stream_s {
  uInt avail_in;
  uInt avail_out;
} z_stream;

typedef struct gz_stream {
  z_stream stream;
  FILE *file;
} gz_stream;

void test_1_callee(gz_stream *s, Byte *buf) {
  Byte *next_out = buf;
  uInt n = s->stream.avail_in;
  if (n > 0) {
    next_out += n;
  }
  s->stream.avail_out -= fread(next_out, 1, s->stream.avail_out, s->file);
}

void test_1_caller(gz_stream *s) {
  unsigned char c;
  test_1_callee(s, &c);
}