Call FreeEnvironmentStrings when msvcrt is unloaded.

diff --git a/dlls/msvcrt/data.c b/dlls/msvcrt/data.c
index 0f03057..e4cb6f9 100644
--- a/dlls/msvcrt/data.c
+++ b/dlls/msvcrt/data.c
@@ -42,6 +42,9 @@
 int MSVCRT_timezone;
 int MSVCRT_app_type;
 
+static char* environ_strings;
+static WCHAR* wenviron_strings;
+
 typedef void (*_INITTERMFUN)(void);
 
 /***********************************************************************
@@ -136,14 +139,14 @@
 }
 
 /* INTERNAL: Since we can't rely on Winelib startup code calling w/getmainargs,
- * we initialise data values during DLL loading. The when called by a native
+ * we initialise data values during DLL loading. When called by a native
  * program we simply return the data we've already initialised. This also means
  * you can call multiple times without leaking
  */
 void msvcrt_init_args(void)
 {
-  char *cmdline, **xargv = NULL, *ptr, *env;
-  WCHAR *wcmdline, **wxargv = NULL, *wptr, *wenv;
+  char *cmdline, **xargv = NULL, *ptr;
+  WCHAR *wcmdline, **wxargv = NULL, *wptr;
   int xargc,end,last_arg,afterlastspace,count;
   DWORD version;
 
@@ -222,9 +225,9 @@
 
   TRACE("found %d arguments\n",MSVCRT___argc);
 
-  env = GetEnvironmentStringsA();
+  environ_strings = GetEnvironmentStringsA();
   count = 1; /* for NULL sentinel */
-  for (ptr = env; *ptr; ptr += strlen(ptr) + 1)
+  for (ptr = environ_strings; *ptr; ptr += strlen(ptr) + 1)
   {
     count++;
   }
@@ -232,7 +235,7 @@
   if (MSVCRT__environ)
   {
     count = 0;
-    for (ptr = env; *ptr; ptr += strlen(ptr) + 1)
+    for (ptr = environ_strings; *ptr; ptr += strlen(ptr) + 1)
     {
       MSVCRT__environ[count++] = ptr;
     }
@@ -241,9 +244,9 @@
 
   MSVCRT___initenv = MSVCRT__environ;
 
-  wenv = GetEnvironmentStringsW();
+  wenviron_strings = GetEnvironmentStringsW();
   count = 1; /* for NULL sentinel */
-  for (wptr = wenv; *wptr; wptr += lstrlenW(wptr) + 1)
+  for (wptr = wenviron_strings; *wptr; wptr += lstrlenW(wptr) + 1)
   {
     count++;
   }
@@ -251,7 +254,7 @@
   if (MSVCRT__wenviron)
   {
     count = 0;
-    for (wptr = wenv; *wptr; wptr += lstrlenW(wptr) + 1)
+    for (wptr = wenviron_strings; *wptr; wptr += lstrlenW(wptr) + 1)
     {
       MSVCRT__wenviron[count++] = wptr;
     }
@@ -264,7 +267,9 @@
 /* INTERNAL: free memory used by args */
 void msvcrt_free_args(void)
 {
-  /* FIXME */
+  /* FIXME: more things to free */
+  FreeEnvironmentStringsA(environ_strings);
+  FreeEnvironmentStringsW(wenviron_strings);
 }
 
 /*********************************************************************