Mercurial > hg > xemacs-beta
comparison src/dumper.c @ 2698:d8df26f08486
[xemacs-hg @ 2005-03-29 02:52:42 by james]
Fix off-by-one error possibly causing backtrace overflow. See xemacs-patches
message with ID <psbr954s83.fsf@diannao.ittc.ku.edu>.
author | james |
---|---|
date | Tue, 29 Mar 2005 02:52:50 +0000 |
parents | 6bee993389f3 |
children | 6fa9919a9a0b |
comparison
equal
deleted
inserted
replaced
2697:6bc1f2c5c30e | 2698:d8df26f08486 |
---|---|
518 if (Dynarr_at (pdump_cv_ptr, i).object == object) | 518 if (Dynarr_at (pdump_cv_ptr, i).object == object) |
519 return Dynarr_atp (pdump_cv_ptr, i); | 519 return Dynarr_atp (pdump_cv_ptr, i); |
520 return 0; | 520 return 0; |
521 } | 521 } |
522 | 522 |
523 #define BACKTRACE_MAX 65536 | |
524 | |
523 static struct | 525 static struct |
524 { | 526 { |
525 struct lrecord_header *obj; | 527 struct lrecord_header *obj; |
526 int position; | 528 int position; |
527 int offset; | 529 int offset; |
528 } backtrace[65536]; | 530 } backtrace[BACKTRACE_MAX]; |
529 | 531 |
530 static int pdump_depth; | 532 static int pdump_depth; |
531 | 533 |
532 void | 534 void |
533 pdump_backtrace (void) | 535 pdump_backtrace (void) |
566 | 568 |
567 static void | 569 static void |
568 pdump_bump_depth (void) | 570 pdump_bump_depth (void) |
569 { | 571 { |
570 int me = pdump_depth++; | 572 int me = pdump_depth++; |
571 if (me > 65536) | 573 if (me >= BACKTRACE_MAX) |
572 { | 574 { |
573 stderr_out ("Backtrace overflow, loop ?\n"); | 575 stderr_out ("Backtrace overflow, loop ?\n"); |
574 ABORT (); | 576 ABORT (); |
575 } | 577 } |
576 backtrace[me].obj = 0; | 578 backtrace[me].obj = 0; |