struct barstruct { char const* some_string; } x; | |
extern void abort (void); | |
void __attribute__((noinline)) | |
foo(void) | |
{ | |
if (!x.some_string) | |
abort (); | |
} | |
void baz(int b) | |
{ | |
struct barstruct bar; | |
struct barstruct* barptr; | |
if (b) | |
barptr = &bar; | |
else | |
{ | |
barptr = &x + 1; | |
barptr = barptr - 1; | |
} | |
barptr->some_string = "Everything OK"; | |
foo(); | |
barptr->some_string = "Everything OK"; | |
} | |
int main() | |
{ | |
x.some_string = (void *)0; | |
baz(0); | |
if (!x.some_string) | |
abort (); | |
return 0; | |
} | |