| 123456789101112131415161718192021222324252627 |
- MODULE TLibc2;
- // Typed libc prototypes: printf is a varargs function whose result may
- // be used or discarded (statement position); malloc/memset/write have
- // real signatures. Exit 42.
- FROM libc IMPORT printf, malloc, memset, write;
- FROM SYSTEM IMPORT ADDRESS, ADR;
- VAR ExitCode, n, w : INTEGER;
- VAR p : ADDRESS;
- VAR buf : ARRAY [0..7] OF CHAR;
- BEGIN
- n := printf("");
- p := malloc(16);
- IF p = NIL THEN
- ExitCode := 1
- ELSE
- p := memset(p, 0, 16);
- buf[0] := 'x';
- buf[1] := CHR(0);
- w := write(1, ADR(buf), 0);
- printf(""); (* statement: result discarded *)
- IF (n = 0) AND (w = 0) AND (p # NIL) AND (buf[0] = 'x') THEN
- ExitCode := 42
- ELSE
- ExitCode := 2
- END
- END
- END TLibc2.
|