On 11.07.2018 17:02, Steven Rostedt wrote:
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;
Yes, this way is better. Thanks! Yordan
? -- Steve