Imported Upstream version 2.9.0
[debian/cc1111] / support / regression / tests / bug1536762.c
1 /*
2    bug1536762.c
3 */
4
5 #include <testfwk.h>
6 #include <string.h>
7 #include <stdint.h>
8
9 xdata uint8_t c = 1;
10
11 struct d {
12         xdata struct d *n;
13         uint8_t f;
14         uint8_t s;
15         xdata uint8_t *buffer;
16         uint16_t length;
17 };
18
19
20 xdata struct d xd = {&xd, 1, 0xab, &c, 3};
21
22
23 struct {
24         xdata struct d *c;
25         int16_t count;
26         xdata uint8_t *bptr;
27 } s = {&xd, -1, &c};
28
29
30 void blurb(void)
31 {
32         if (s.count < 0) {
33                 s.c->s = 0xef;
34                 s.count = s.c->length - 1;
35                 s.bptr = s.c->buffer;
36         }
37         *s.bptr = 0;
38         s.bptr++;
39         s.count--;
40 }
41
42
43 void 
44 testBug(void)
45 {
46   ASSERT(xd.s == 0xab);
47   ASSERT(s.c->s == 0xab);
48   
49   s.c->s = 0xcd;
50
51   ASSERT(xd.s == 0xcd);
52   ASSERT(s.c->s == 0xcd);
53
54   blurb();
55
56   ASSERT(xd.s == 0xef);
57   ASSERT(s.c->s == 0xef);
58   ASSERT(c == 0);
59 }
60