On Wed, 11 Jul 2018 16:37:08 +0300 "Yordan Karadzhov (VMware)" <y.karadz@xxxxxxxxx> wrote: > kshark_get_task_pids() should not return a "memory allocation" error > in the case when it is called before having trace data loaded. > > Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@xxxxxxxxx> > --- > kernel-shark-qt/src/libkshark.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/kernel-shark-qt/src/libkshark.c b/kernel-shark-qt/src/libkshark.c > index 668b6df..75b88c9 100644 > --- a/kernel-shark-qt/src/libkshark.c > +++ b/kernel-shark-qt/src/libkshark.c > @@ -303,6 +303,12 @@ ssize_t kshark_get_task_pids(struct kshark_context *kshark_ctx, int **pids) > } > } > > + if (!pid_count) { > + free(*pids); > + *pids = NULL; > + return pid_count; > + } > + > temp_pids = realloc(*pids, pid_count * sizeof(int)); > if (!temp_pids) > goto fail; What about doing it this way: diff --git a/kernel-shark-qt/src/libkshark.c b/kernel-shark-qt/src/libkshark.c index 668b6df8..34daa25e 100644 --- a/kernel-shark-qt/src/libkshark.c +++ b/kernel-shark-qt/src/libkshark.c @@ -303,12 +303,17 @@ ssize_t kshark_get_task_pids(struct kshark_context *kshark_ctx, int **pids) } } - temp_pids = realloc(*pids, pid_count * sizeof(int)); - if (!temp_pids) - goto fail; + if (pid_count) { + temp_pids = realloc(*pids, pid_count * sizeof(int)); + if (!temp_pids) + goto fail; - /* Paranoid: In the unlikely case of shrinking *pids, realloc moves it */ - *pids = temp_pids; + /* Paranoid: In the unlikely case of shrinking *pids, realloc moves it */ + *pids = temp_pids; + } else { + free(*pids); + *pids = NULL; + } return pid_count; ? -- Steve
![]() |