From ea23808b14438001e2c481a510ca5acb886ca2d4 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Tue, 11 Oct 2011 13:58:18 +0000 Subject: [PATCH] 2011-10-11 Pedro Alves gdb/ * linux-nat.c (linux_lwp_is_zombie): Return early if the LWP is not zombie instead of reading the whole file. --- gdb/ChangeLog | 5 +++++ gdb/linux-nat.c | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index fc4e9ddf5db..3aedc62eea1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2011-10-11 Pedro Alves + + * linux-nat.c (linux_lwp_is_zombie): Return early if the LWP is + not zombie instead of reading the whole file. + 2011-10-11 Jan Kratochvil Fix separate debuginfo warning with "remote:" access. diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 411afdc66bb..5c801141aba 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -2382,7 +2382,8 @@ linux_lwp_is_zombie (long lwp) { char buffer[MAXPATHLEN]; FILE *procfile; - int retval = 0; + int retval; + int have_state; xsnprintf (buffer, sizeof (buffer), "/proc/%ld/status", lwp); procfile = fopen (buffer, "r"); @@ -2391,14 +2392,17 @@ linux_lwp_is_zombie (long lwp) warning (_("unable to open /proc file '%s'"), buffer); return 0; } + + have_state = 0; while (fgets (buffer, sizeof (buffer), procfile) != NULL) - if (strcmp (buffer, "State:\tZ (zombie)\n") == 0) + if (strncmp (buffer, "State:", 6) == 0) { - retval = 1; + have_state = 1; break; } + retval = (have_state + && strcmp (buffer, "State:\tZ (zombie)\n") == 0); fclose (procfile); - return retval; } -- 2.30.2