aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common/analyzer/gzio-3a.c
blob: faf86fa38770bb569a8003637a0f3e9285634756 (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
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 gz_stream {
  FILE *file;
  uInt avail_in;
  uInt avail_out;
} gz_stream;

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

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