From: Guilherme Maciel Ferreira <[email protected]>
Signed-off-by: Guilherme Maciel Ferreira <[email protected]> --- include/libbb.h | 5 +++++ networking/wget.c | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/include/libbb.h b/include/libbb.h index 0690dca..f0d41f1 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -1763,6 +1763,11 @@ extern struct globals *const ptr_to_globals; (*(struct globals**)&ptr_to_globals) = (void*)(x); \ barrier(); \ } while (0) +#define FREE_PTR_TO_GLOBALS() do { \ + if (ENABLE_FEATURE_CLEAN_UP) { \ + free(ptr_to_globals); \ + } \ +} while (0) /* You can change LIBBB_DEFAULT_LOGIN_SHELL, but don't use it, * use bb_default_login_shell and following defines. diff --git a/networking/wget.c b/networking/wget.c index 4eafebe..696fa3e 100644 --- a/networking/wget.c +++ b/networking/wget.c @@ -86,10 +86,12 @@ struct globals { } FIX_ALIASING; #define G (*ptr_to_globals) #define INIT_G() do { \ - SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \ + SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \ IF_FEATURE_WGET_TIMEOUT(G.timeout_seconds = 900;) \ } while (0) - +#define FINI_G() do { \ + FREE_PTR_TO_GLOBALS(); \ +} while(0) /* Must match option string! */ enum { @@ -987,5 +989,13 @@ int wget_main(int argc UNUSED_PARAM, char **argv) if (G.output_fd >= 0) xclose(G.output_fd); +#if ENABLE_FEATURE_WGET_LONG_OPTIONS + if (ENABLE_FEATURE_CLEAN_UP) { + free(G.extra_headers); + } +#endif + + FINI_G(); + return EXIT_SUCCESS; } -- 1.7.0.4 _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
