From 38d49aff686abd9a37407a26f4c6f0a22af7edf4 Mon Sep 17 00:00:00 2001 From: David Carlton Date: Tue, 17 Dec 2002 18:34:06 +0000 Subject: [PATCH] 2002-12-17 David Carlton * symtab.c (lookup_partial_symbol): Don't search past the end of the partial symbols. --- gdb/ChangeLog | 5 +++++ gdb/symtab.c | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 95ec1d1ccc0..bbcfee9dd2d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2002-12-17 David Carlton + + * symtab.c (lookup_partial_symbol): Don't search past the end of + the partial symbols. + 2002-12-17 Andrew Cagney * stack.c (frame_info): Use get_frame_saved_regs. diff --git a/gdb/symtab.c b/gdb/symtab.c index d7a0b63e85e..badda47c733 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -1300,7 +1300,7 @@ lookup_partial_symbol (struct partial_symtab *pst, const char *name, int global, { struct partial_symbol *temp; struct partial_symbol **start, **psym; - struct partial_symbol **top, **bottom, **center; + struct partial_symbol **top, **real_top, **bottom, **center; int length = (global ? pst->n_global_syms : pst->n_static_syms); int do_linear_search = 1; @@ -1323,6 +1323,7 @@ lookup_partial_symbol (struct partial_symtab *pst, const char *name, int global, bottom = start; top = start + length - 1; + real_top = top; while (top > bottom) { center = bottom + (top - bottom) / 2; @@ -1348,7 +1349,7 @@ lookup_partial_symbol (struct partial_symtab *pst, const char *name, int global, /* djb - 2000-06-03 - Use SYMBOL_MATCHES_NAME, not a strcmp, so we don't have to force a linear search on C++. Probably holds true for JAVA as well, no way to check.*/ - while (SYMBOL_MATCHES_NAME (*top,name)) + while (top <= real_top && SYMBOL_MATCHES_NAME (*top,name)) { if (SYMBOL_NAMESPACE (*top) == namespace) {