diff options
Diffstat (limited to 'sal/osl')
-rw-r--r-- | sal/osl/unx/diagnose.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sal/osl/unx/diagnose.c b/sal/osl/unx/diagnose.c index a181e2d57904..d9a697bd4981 100644 --- a/sal/osl/unx/diagnose.c +++ b/sal/osl/unx/diagnose.c @@ -4,9 +4,9 @@ * * $RCSfile: diagnose.c,v $ * - * $Revision: 1.20 $ + * $Revision: 1.21 $ * - * last change: $Author: kz $ $Date: 2006-11-06 14:41:14 $ + * last change: $Author: ihi $ $Date: 2006-11-15 12:33:20 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -198,10 +198,11 @@ static void osl_diagnose_backtrace_Impl (oslDebugMessageFunc f) for (i = 0; (i < FRAME_OFFSET) && (fp != 0); i++) fp = (struct frame*)((char*)(fp->fr_savfp) + STACK_BIAS); - for (i = 0; (fp != 0) && (fp->fr_savpc != 0) && (fp->fr_savpc != -1); i++) + for (i = 0; (fp != 0) && (fp->fr_savpc != 0); i++) { + struct frame * prev = (struct frame*)((char*)(fp->fr_savfp) + STACK_BIAS); osl_diagnose_frame_Impl (f, i, (void*)(fp->fr_savpc)); - fp = (struct frame*)((char*)(fp->fr_savfp) + STACK_BIAS); + fp = (prev > fp) ? prev : 0; } } |