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

Reply via email to