From a35b258841cde7884f5bb71d5ae0951d5e3f27b7 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Fri, 6 Mar 2020 19:03:24 +0100 Subject: fork(3) going well, freed a leak --- src/ft_exit.c | 3 ++- src/ft_music.c | 10 ++++++---- src/ft_parse_map.c | 10 +++++----- src/ft_treat_args.c | 7 ++++++- src/ft_warp_level.c | 1 + 5 files changed, 20 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/ft_exit.c b/src/ft_exit.c index c7b2275..3ba1237 100644 --- a/src/ft_exit.c +++ b/src/ft_exit.c @@ -15,6 +15,7 @@ #include #include #include +#include #include static void @@ -65,7 +66,7 @@ int } if (clist->isoldmus && clist->wlist.inited) { - /* kill fork() here */ + kill(clist->mpid, SIGTERM); } ft_free_lists(clist); ft_printf("Exiting program\n"); diff --git a/src/ft_music.c b/src/ft_music.c index b9e9d89..70bb1a1 100644 --- a/src/ft_music.c +++ b/src/ft_music.c @@ -12,17 +12,19 @@ #include #include -#include #include +#include + void - ft_music_fork(t_cub *cl) + ft_music_fork(char *music_cmd) { - cl->isoldmus = 1; + (void)music_cmd; while (1) { ft_printf("qweqwe\n"); + sleep(1); } - /* system(cl->mlist.music_cmd); */ /* execve here */ + /* system(cl->mlist.music_cmd); */ } diff --git a/src/ft_parse_map.c b/src/ft_parse_map.c index 3c1fd9c..36d1ec5 100644 --- a/src/ft_parse_map.c +++ b/src/ft_parse_map.c @@ -75,13 +75,13 @@ static int8_t } void - ft_save_name(const char *map_path, t_map *mlist, t_cub *clist) + ft_save_name(const char *map_path, t_cub *clist) { - ft_memdel((void**)&mlist->filename); - if (!(mlist->filename = + ft_memdel((void**)&clist->mlist.filename); + if (!(clist->mlist.filename = (char*)malloc((ft_strlen(map_path) + 1) * sizeof(char)))) ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, clist); - ft_sprintf(mlist->filename, "%s", map_path); + ft_sprintf(clist->mlist.filename, "%s", map_path); } void @@ -95,7 +95,7 @@ void fd = open(map_path, O_RDONLY); if (fd < 0) ft_error(FT_RET_NO_MAP, FT_ERR_NO_MAP, clist); - ft_save_name(map_path, &clist->mlist, clist); + ft_save_name(map_path, clist); ret = 1; while (ret != 12 && ret >= 0) ret = ft_parse_it(fd, clist); diff --git a/src/ft_treat_args.c b/src/ft_treat_args.c index b588b46..accf3aa 100644 --- a/src/ft_treat_args.c +++ b/src/ft_treat_args.c @@ -37,8 +37,13 @@ uint8_t return (ft_exit(FT_RET_FAILED_MLX, clist)); ft_draw_scene(clist); if (clist->mlist.ismusic) - ft_music_fork(cl); + { /* create music fork() here */ + clist->isoldmus = 1; + clist->mpid = fork(); + if (clist->mpid == 0) + ft_music_fork(clist->mlist.music_cmd); + } ft_hooks_and_loops(&clist->wlist, clist); } else if (argc == 3 && !ft_strncmp("--save", argv[2], 7)) diff --git a/src/ft_warp_level.c b/src/ft_warp_level.c index 4d1ca12..0d126c1 100644 --- a/src/ft_warp_level.c +++ b/src/ft_warp_level.c @@ -20,6 +20,7 @@ static void ft_del_map(t_map *ml) { + ft_memdel((void**)&ml->filename); ft_memdel((void**)&ml->no_tex_path); ft_memdel((void**)&ml->so_tex_path); ft_memdel((void**)&ml->ea_tex_path); -- cgit v1.2.3