summaryrefslogtreecommitdiff
path: root/src/regress/lib
diff options
context:
space:
mode:
authorart <>2002-01-04 13:33:17 +0000
committerart <>2002-01-04 13:33:17 +0000
commit327f214c26abf9d44fd57d9bf6c2cc8f2bb8e4a0 (patch)
tree7a457c05556ba406ce6ed90e517729caa4937c81 /src/regress/lib
parentade97ccb075fc58ae21a1877632b1a7f1d14c216 (diff)
downloadopenbsd-327f214c26abf9d44fd57d9bf6c2cc8f2bb8e4a0.tar.gz
openbsd-327f214c26abf9d44fd57d9bf6c2cc8f2bb8e4a0.tar.bz2
openbsd-327f214c26abf9d44fd57d9bf6c2cc8f2bb8e4a0.zip
More explicit tests of longjmp.
Diffstat (limited to 'src/regress/lib')
-rw-r--r--src/regress/lib/libc/longjmp/longjmp.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/regress/lib/libc/longjmp/longjmp.c b/src/regress/lib/libc/longjmp/longjmp.c
index d8b9fe86bd..4d8edb4716 100644
--- a/src/regress/lib/libc/longjmp/longjmp.c
+++ b/src/regress/lib/libc/longjmp/longjmp.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: longjmp.c,v 1.1 2002/01/04 13:02:57 art Exp $ */ 1/* $OpenBSD: longjmp.c,v 1.2 2002/01/04 13:33:17 art Exp $ */
2/* 2/*
3 * Artur Grabowski <art@openbsd.org> Public Domain. 3 * Artur Grabowski <art@openbsd.org> Public Domain.
4 */ 4 */
@@ -16,21 +16,34 @@ jmp_buf buf;
16 * When longjmp is passed the incorrect arg (0), it should translate it into 16 * When longjmp is passed the incorrect arg (0), it should translate it into
17 * something better. 17 * something better.
18 * 18 *
19 * Test is simple. rlimit the cpu time and throw an incorrect longjmp. If 0 19 * The rlimit is here in case we start spinning.
20 * is not translated we'll spin until we hit the cpu time limit.
21 */ 20 */
22int 21int
23main() 22main()
24{ 23{
25 struct rlimit rl; 24 struct rlimit rl;
25 volatile int i, expect;
26 26
27 rl.rlim_cur = 2; 27 rl.rlim_cur = 2;
28 rl.rlim_max = 2; 28 rl.rlim_max = 2;
29 if (setrlimit(RLIMIT_CPU, &rl) < 0) 29 if (setrlimit(RLIMIT_CPU, &rl) < 0)
30 err(1, "setrlimit"); 30 err(1, "setrlimit");
31 31
32 if (setjmp(buf) == 0) 32 expect = 0;
33 i = setjmp(buf);
34 if (i == 0 && expect != 0)
35 errx(1, "setjmp returns 0 on longjmp(.., 0)");
36 if (expect == 0) {
37 expect = -1;
33 longjmp(buf, 0); 38 longjmp(buf, 0);
39 }
40
41 expect = 0;
42 i = setjmp(buf);
43 if (i != expect)
44 errx(1, "bad return from setjmp %d/%d", expect, i);
45 if (expect < 1000)
46 longjmp(buf, expect += 2);
34 47
35 return 0; 48 return 0;
36} 49}