|
From: <sv...@va...> - 2005-08-14 04:29:14
|
Author: njn
Date: 2005-08-14 05:29:12 +0100 (Sun, 14 Aug 2005)
New Revision: 4403
Log:
Compactify unload_symbols().
Modified:
trunk/coregrind/m_debuginfo/symtab.c
Modified: trunk/coregrind/m_debuginfo/symtab.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_debuginfo/symtab.c 2005-08-14 04:12:40 UTC (rev 440=
2)
+++ trunk/coregrind/m_debuginfo/symtab.c 2005-08-14 04:29:12 UTC (rev 440=
3)
@@ -1703,36 +1703,28 @@
*/
static void unload_symbols ( Addr start, SizeT length )
{
- SegInfo *prev, *curr;
+ SegInfo** prev_next_ptr =3D &segInfo_list;
+ SegInfo* curr =3D segInfo_list;
=20
- prev =3D NULL;
- curr =3D segInfo_list;
- while (True) {
- if (curr =3D=3D NULL) break;
- if (start =3D=3D curr->start) break;
- prev =3D curr;
- curr =3D curr->next;
+ while (curr) {
+ if (start =3D=3D curr->start) {
+ // Found it; remove from list and free it.
+ if (VG_(clo_verbosity) > 1)
+ VG_(message)(Vg_DebugMsg,=20
+ "discard syms at %p-%p in %s due to munmap()",=20
+ start, start+length,
+ curr->filename ? curr->filename : (Char *)"???"=
);
+ vg_assert(*prev_next_ptr =3D=3D curr);
+ *prev_next_ptr =3D curr->next;
+ freeSegInfo(curr);
+ return;
+ }
+ prev_next_ptr =3D &curr->next;
+ curr =3D curr->next;
}
- if (curr =3D=3D NULL) {
- VGP_POPCC(VgpReadSyms);
- return;
- }
=20
- if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg,=20
- "discard syms at %p-%p in %s due to munmap()",=20
- start, start+length, curr->filename ? curr->filename =
: (Char *)"???");
-
- vg_assert(prev =3D=3D NULL || prev->next =3D=3D curr);
-
- if (prev =3D=3D NULL) {
- segInfo_list =3D curr->next;
- } else {
- prev->next =3D curr->next;
- }
-
- freeSegInfo(curr);
- return;
+ // Not found.
+ VGP_POPCC(VgpReadSyms);
}
=20
void VG_(seginfo_decref)(SegInfo *si, Addr start)
|