Piotr Caban : msvcp90: Free memory allocated by _get_current_locale function.

Alexandre Julliard julliard at winehq.org
Mon Nov 12 14:14:39 CST 2012


Module: wine
Branch: master
Commit: 0609fccf449fd5ae87674feff5032e75cc69af27
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=0609fccf449fd5ae87674feff5032e75cc69af27

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Sat Nov 10 00:00:08 2012 +0100

msvcp90: Free memory allocated by _get_current_locale function.

---

 dlls/msvcp90/tests/misc.c |   19 +++++++++++++++----
 1 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/dlls/msvcp90/tests/misc.c b/dlls/msvcp90/tests/misc.c
index 5faa03c..19dcdde 100644
--- a/dlls/msvcp90/tests/misc.c
+++ b/dlls/msvcp90/tests/misc.c
@@ -50,6 +50,7 @@ typedef struct
 
 static void* (__cdecl *p_set_invalid_parameter_handler)(void*);
 static _locale_t (__cdecl *p__get_current_locale)(void);
+static void (__cdecl *p__free_locale)(_locale_t);
 static void  (__cdecl *p_free)(void*);
 
 static void (__cdecl *p_char_assign)(void*, const void*);
@@ -174,8 +175,9 @@ static BOOL init(void)
 
     p_set_invalid_parameter_handler = (void*)GetProcAddress(msvcr, "_set_invalid_parameter_handler");
     p__get_current_locale = (void*)GetProcAddress(msvcr, "_get_current_locale");
+    p__free_locale = (void*)GetProcAddress(msvcr, "_free_locale");
     p_free = (void*)GetProcAddress(msvcr, "free");
-    if(!p_set_invalid_parameter_handler || !p__get_current_locale || !p_free) {
+    if(!p_set_invalid_parameter_handler || !p__get_current_locale || !p__free_locale || !p_free) {
         win_skip("Error setting tests environment\n");
         return FALSE;
     }
@@ -389,6 +391,7 @@ static void test_wctype(void)
 static void test__Getctype(void)
 {
     MSVCP__Ctypevec ret;
+    _locale_t locale;
 
     ok(p__Getctype(&ret) == &ret, "__Getctype returned incorrect pointer\n");
     ok(ret.handle == 0, "ret.handle = %d\n", ret.handle);
@@ -397,7 +400,9 @@ static void test__Getctype(void)
     ok(ret.table[0] == 32, "ret.table[0] = %d\n", ret.table[0]);
     p_free(ret.table);
 
-    p__get_current_locale()->locinfo->lc_handle[LC_COLLATE] = 0x1234567;
+    locale = p__get_current_locale();
+    locale->locinfo->lc_handle[LC_COLLATE] = 0x1234567;
+    p__free_locale(locale);
     ok(p__Getctype(&ret) == &ret, "__Getctype returned incorrect pointer\n");
     ok(ret.handle == 0x1234567, "ret.handle = %d\n", ret.handle);
     ok(ret.page == 0, "ret.page = %d\n", ret.page);
@@ -409,13 +414,16 @@ static void test__Getctype(void)
 static void test__Getcoll(void)
 {
     ULONGLONG (__cdecl *p__Getcoll_arg)(MSVCP__Collvec*);
+    _locale_t locale;
 
     union {
         MSVCP__Collvec collvec;
         ULONGLONG ull;
     }ret;
 
-    p__get_current_locale()->locinfo->lc_handle[LC_COLLATE] = 0x7654321;
+    locale = p__get_current_locale();
+    locale->locinfo->lc_handle[LC_COLLATE] = 0x7654321;
+    p__free_locale(locale);
     ret.ull = 0;
     p__Getcoll_arg = (void*)p__Getcoll;
     p__Getcoll_arg(&ret.collvec);
@@ -462,12 +470,15 @@ static void test_virtual_call(void)
 {
     BYTE this[256];
     basic_string_char bstr;
+    _locale_t locale;
     const char *p;
     char str1[] = "test";
     char str2[] = "TEST";
     int ret;
 
-    p__get_current_locale()->locinfo->lc_handle[LC_COLLATE] = 1;
+    locale = p__get_current_locale();
+    locale->locinfo->lc_handle[LC_COLLATE] = 1;
+    p__free_locale(locale);
     call_func2(p_collate_char_ctor_refs, this, 0);
     ret = (int)call_func5(p_collate_char_compare, this, str1, str1+4, str1, str1+4);
     ok(ret == 0, "collate<char>::compare returned %d\n", ret);




More information about the wine-cvs mailing list