Hi,

In a normal execution this memleak doesn't have a bad effect in practical
terms because at end of the program the memory will be free'd.

I'm fine to pick this patch.

Regards,
Anibal

On Wed, 21 Jul 2021 at 04:46, ?ukasz Majewski <lu...@denx.de> wrote:

> From: Adrian Freihofer <adrian.freiho...@siemens.com>
>
> make && valgrind -s --leak-check=full ./ptest-runner -d tests/data2
>
> ==4154029== HEAP SUMMARY:
> ==4154029==     in use at exit: 20 bytes in 2 blocks
> ==4154029==   total heap usage: 45 allocs, 43 frees, 42,909 bytes allocated
> ==4154029==
> ==4154029== 20 (8 direct, 12 indirect) bytes in 1 blocks are definitely
> lost in loss record 2 of 2
> ==4154029==    at 0x4839809: malloc (vg_replace_malloc.c:307)
> ==4154029==    by 0x40252D: str2array (main.c:70)
> ==4154029==    by 0x402768: main (main.c:119)
> ==4154029==
> ==4154029== LEAK SUMMARY:
> ==4154029==    definitely lost: 8 bytes in 1 blocks
> ==4154029==    indirectly lost: 12 bytes in 1 blocks
> ==4154029==      possibly lost: 0 bytes in 0 blocks
> ==4154029==    still reachable: 0 bytes in 0 blocks
> ==4154029==         suppressed: 0 bytes in 0 blocks
> ==4154029==
> ==4154029== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
>
> With this patch valgrind reports 0 errors.
>
> Signed-off-by: Adrian Freihofer <adrian.freiho...@siemens.com>
> ---
>  main.c | 21 ++++++++++++++++++++-
>  1 file changed, 20 insertions(+), 1 deletion(-)
>
> diff --git a/main.c b/main.c
> index 467548e..e73626c 100644
> --- a/main.c
> +++ b/main.c
> @@ -84,6 +84,25 @@ str2array(char *str, const char *delim, int *num)
>         return array;
>  }
>
> +void cleanup_ptest_opts(struct ptest_options *opts)
> +{
> +       for (int i=0; i < opts->dirs_no; i++)
> +               free(opts->dirs[i]);
> +
> +       free(opts->dirs);
> +       opts->dirs = NULL;
> +
> +       if (opts->ptests) {
> +               free(opts->ptests);
> +               opts->ptests = NULL;
> +       }
> +
> +       if (opts->xml_filename) {
> +               free(opts->xml_filename);
> +               opts->xml_filename = NULL;
> +       }
> +}
> +
>  int
>  main(int argc, char *argv[])
>  {
> @@ -98,7 +117,7 @@ main(int argc, char *argv[])
>  #endif
>
>         struct ptest_list *head, *run;
> -       struct ptest_options opts;
> +       __attribute__ ((__cleanup__(cleanup_ptest_opts))) struct
> ptest_options opts;
>
>         opts.dirs = malloc(sizeof(char **) * 1);
>         CHECK_ALLOCATION(opts.dirs, 1, 1);
> --
> 2.20.1
>
>
> 
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#54215): https://lists.yoctoproject.org/g/yocto/message/54215
Mute This Topic: https://lists.yoctoproject.org/mt/84352907/21656
Group Owner: yocto+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to