diff options
| author | Mikolaj Golub <trociny@FreeBSD.org> | 2012-02-12 07:53:02 +0000 |
|---|---|---|
| committer | Mikolaj Golub <trociny@FreeBSD.org> | 2012-02-12 07:53:02 +0000 |
| commit | 645ff62d5a9c1c7ab5cf92565bc535cfbf1d5620 (patch) | |
| tree | 5ba5b75a56b84dec682cbf6c97f48c543bf9aca6 | |
| parent | e4076cb96d58a549578c01358533d8d69218cfb1 (diff) | |
Notes
| -rw-r--r-- | lib/libkvm/kvm_proc.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/libkvm/kvm_proc.c b/lib/libkvm/kvm_proc.c index f8f84830d0a8..5b8b6aabab85 100644 --- a/lib/libkvm/kvm_proc.c +++ b/lib/libkvm/kvm_proc.c @@ -471,7 +471,7 @@ kvm_getprocs(kd, op, arg, cnt) int *cnt; { int mib[4], st, nprocs; - size_t size; + size_t size, osize; int temp_op; if (kd->procbase != 0) { @@ -521,10 +521,11 @@ kvm_getprocs(kd, op, arg, cnt) _kvm_realloc(kd, kd->procbase, size); if (kd->procbase == 0) return (0); + osize = size; st = sysctl(mib, temp_op == KERN_PROC_ALL || temp_op == KERN_PROC_PROC ? 3 : 4, kd->procbase, &size, NULL, 0); - } while (st == -1 && errno == ENOMEM); + } while (st == -1 && errno == ENOMEM && size == osize); if (st == -1) { _kvm_syserr(kd, kd->program, "kvm_getprocs"); return (0); |
