diff options
-rw-r--r-- | usr/src/test/os-tests/tests/i386/badseg.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/usr/src/test/os-tests/tests/i386/badseg.c b/usr/src/test/os-tests/tests/i386/badseg.c index 6bf4e0260f..7e5e8b8a32 100644 --- a/usr/src/test/os-tests/tests/i386/badseg.c +++ b/usr/src/test/os-tests/tests/i386/badseg.c @@ -57,17 +57,19 @@ static void resetseg(uint_t seg) { ucontext_t ucp; - int done = 0; + volatile int done = 0; int rc = getcontext(&ucp); if (done) { - rc = getcontext(&ucp); + (void) getcontext(&ucp); return; } - done = 1; - ucp.uc_mcontext.gregs[seg] = selector; - setcontext(&ucp); + if (rc == 0) { + done = 1; + ucp.uc_mcontext.gregs[seg] = selector; + setcontext(&ucp); + } abort(); } |