[ aleksazr @ 05.09.2010. 18:36 ] @
Code:

static jmp_buf environment;

void testproc (void)
{
        longjmp(environment, 1);
}

long do_setjmp (void)
{
        return setjmp(environment);
}

long testing (void)
{
    long status;

        status = setjmp(environment);
//      status = do_setjmp();

        if (status == 0) {
            testproc();
            return -1;
        }

        return status;
}


Program pocinje u rutini testing, zove setjmp pa rutinu koja obavezno zove longjmp.

E sad, ako zovem setjmp iz rutine testing, stvar radi. Prvi put, status je nula,
pa se pozove testproc, drugi put je 1, pa vratim status(1).

Ali, ako setjmp uradim sa do_setjmp, kad pozovem testproc i on pozove longjmp,
longjmp se vrati gde treba (u rutinu do_setjmp) ali se onda ta rutina vrati na return -1;
tj iza poziva testproc, a ne na "if (status == 0)"..... zasto?
[ aleksazr @ 05.09.2010. 21:42 ] @
odgovor ovde:

http://groups.google.com/group...hread/thread/0a6b5ccb6aa89477#