[1/2] winetest: malloc() & co are encapsulated, so encapsulate free() too.

Francois Gouget fgouget at free.fr
Thu May 14 18:57:42 CDT 2009


---

It's not very clean to encapsulate malloc() & co with xmalloc(), etc, 
but to then call free() directly. It means if the implementation of 
xmalloc() is changed to call HeapAlloc() all the free() have to be 
changed. So encapsulate free() too.


 programs/winetest/gui.c      |   28 ++++++++++++++--------------
 programs/winetest/main.c     |   12 ++++++------
 programs/winetest/send.c     |    6 +++---
 programs/winetest/util.c     |    5 +++++
 programs/winetest/winetest.h |    1 +
 5 files changed, 29 insertions(+), 23 deletions(-)

diff --git a/programs/winetest/gui.c b/programs/winetest/gui.c
index 2957dbf..04d5402 100644
--- a/programs/winetest/gui.c
+++ b/programs/winetest/gui.c
@@ -66,7 +66,7 @@ textStatus (va_list ap)
 
     fputs (str, stderr);
     fputc ('\n', stderr);
-    free (str);
+    xfree (str);
     return 0;
 }
 
@@ -78,7 +78,7 @@ guiStatus (va_list ap)
 
     if (len > 128) str[129] = 0;
     SetDlgItemText (dialog, IDC_SB, str);
-    free (str);
+    xfree (str);
     return 0;
 }
 
@@ -121,7 +121,7 @@ textStep (va_list ap)
     progressCurr++;
     fputs (str, stderr);
     fprintf (stderr, " (%d of %d)\n", progressCurr, progressMax);
-    free (str);
+    xfree (str);
     return 0;
 }
 
@@ -135,7 +135,7 @@ guiStep (va_list ap)
     SetDlgItemText (dialog, pgID, str);
     SendDlgItemMessage (dialog, pgID+1, PBM_SETPOS,
                         (WPARAM)(progressScale * progressCurr), 0);
-    free (str);
+    xfree (str);
     return 0;
 }
 
@@ -149,7 +149,7 @@ textDelta (va_list ap)
     progressCurr += inc;
     fputs (str, stderr);
     fprintf (stderr, " (%d of %d)\n", progressCurr, progressMax);
-    free (str);
+    xfree (str);
     return 0;
 }
 
@@ -164,7 +164,7 @@ guiDelta (va_list ap)
     SetDlgItemText (dialog, pgID, str);
     SendDlgItemMessage (dialog, pgID+1, PBM_SETPOS,
                         (WPARAM)(progressScale * progressCurr), 0);
-    free (str);
+    xfree (str);
     return 0;
 }
 
@@ -194,7 +194,7 @@ textDir (va_list ap)
     fputs ("Temporary directory: ", stderr);
     fputs (str, stderr);
     fputc ('\n', stderr);
-    free (str);
+    xfree (str);
     return 0;
 }
 
@@ -204,7 +204,7 @@ guiDir (va_list ap)
     char *str = vstrmake (NULL, ap);
 
     SetDlgItemText (dialog, IDC_DIR, str);
-    free (str);
+    xfree (str);
     return 0;
 }
 
@@ -217,7 +217,7 @@ textOut (va_list ap)
     fputs ("Log file: ", stderr);
     fputs (str, stderr);
     fputc ('\n', stderr);
-    free (str);
+    xfree (str);
     return 0;
 }
 
@@ -227,7 +227,7 @@ guiOut (va_list ap)
     char *str = vstrmake (NULL, ap);
 
     SetDlgItemText (dialog, IDC_OUT, str);
-    free (str);
+    xfree (str);
     return 0;
 }
 
@@ -246,7 +246,7 @@ guiWarning (va_list ap)
     char *str = vstrmake (NULL, ap);
 
     MessageBox (dialog, str, "Warning", MB_ICONWARNING | MB_OK);
-    free (str);
+    xfree (str);
     return 0;
 }
 
@@ -265,7 +265,7 @@ guiError (va_list ap)
     char *str = vstrmake (NULL, ap);
 
     MessageBox (dialog, str, "Error", MB_ICONERROR | MB_OK);
-    free (str);
+    xfree (str);
     return 0;
 }
 
@@ -294,7 +294,7 @@ textAsk (va_list ap)
 
     fprintf (stderr, "Question of type %d: %s\n"
              "Returning default: %d\n", uType, str, ret);
-    free (str);
+    xfree (str);
     return ret;
 }
 
@@ -306,7 +306,7 @@ guiAsk (va_list ap)
     int ret = MessageBox (dialog, str, "Question",
                           MB_ICONQUESTION | uType);
 
-    free (str);
+    xfree (str);
     return ret;
 }
 
diff --git a/programs/winetest/main.c b/programs/winetest/main.c
index 7bbb0cb..e35e83f 100644
--- a/programs/winetest/main.c
+++ b/programs/winetest/main.c
@@ -114,7 +114,7 @@ static char * get_file_version(char * file_name)
                     sprintf(version, "version not available");
             } else
                 sprintf(version, "unknown");
-            free(data);
+            xfree(data);
         } else
             sprintf(version, "failed");
     } else
@@ -355,7 +355,7 @@ static void append_path( const char *path)
     strcat(newpath, path);
     SetEnvironmentVariableA("PATH", newpath);
 
-    free(newpath);
+    xfree(newpath);
 }
 
 /* Run a command for MS milliseconds.  If OUT != NULL, also redirect
@@ -473,7 +473,7 @@ get_subtests (const char *tempdir, struct wine_test *test, LPTSTR res_name)
         /* Restore PATH again */
         SetEnvironmentVariableA("PATH", curpath);
     }
-    free (cmd);
+    xfree (cmd);
 
     if (status == -2)
     {
@@ -533,7 +533,7 @@ run_test (struct wine_test* test, const char* subtest, HANDLE out_file, const ch
 
     xprintf ("%s:%s start %s -\n", test->name, subtest, file);
     status = run_ex (cmd, out_file, tempdir, 120000);
-    free (cmd);
+    xfree (cmd);
     xprintf ("%s:%s done (%d)\n", test->name, subtest, status);
 }
 
@@ -753,8 +753,8 @@ run_tests (char *logname)
     CloseHandle( logfile );
     logfile = 0;
     remove_dir (tempdir);
-    free (wine_tests);
-    free (curpath);
+    xfree(wine_tests);
+    xfree(curpath);
 
     return logname;
 }
diff --git a/programs/winetest/send.c b/programs/winetest/send.c
index 947f2c1..4a36558 100644
--- a/programs/winetest/send.c
+++ b/programs/winetest/send.c
@@ -97,7 +97,7 @@ send_str (SOCKET s, ...)
     va_end (ap);
     if (!p) return 1;
     ret = send_buf (s, p, len);
-    free (p);
+    xfree (p);
     return ret;
 }
 
@@ -159,7 +159,7 @@ send_file (const char *name)
     str = strmake (&total, body1, name);
     ret = send_str (s, head, filesize + total + sizeof body2 - 1) ||
         send_buf (s, str, total);
-    free (str);
+    xfree (str);
     if (ret) {
         report (R_WARNING, "Error sending header: %d, %d",
                 errno, WSAGetLastError ());
@@ -211,7 +211,7 @@ send_file (const char *name)
     str = strmake (&count, "Received %s (%d bytes).\n",
                    name, filesize);
     ret = memcmp (str, buffer + total - count, count);
-    free (str);
+    xfree (str);
     if (ret) {
         buffer[total] = 0;
         str = strstr (buffer, "\r\n\r\n");
diff --git a/programs/winetest/util.c b/programs/winetest/util.c
index 0253296..77c56e7 100644
--- a/programs/winetest/util.c
+++ b/programs/winetest/util.c
@@ -50,6 +50,11 @@ char *xstrdup( const char *str )
     return res;
 }
 
+void xfree (void *op)
+{
+    free (op);
+}
+
 static char *vstrfmtmake (size_t *lenp, const char *fmt, va_list ap)
 {
     size_t size = 1000;
diff --git a/programs/winetest/winetest.h b/programs/winetest/winetest.h
index e4844a9..d18dfb8 100644
--- a/programs/winetest/winetest.h
+++ b/programs/winetest/winetest.h
@@ -48,6 +48,7 @@ extern HANDLE logfile;
 void *xmalloc (size_t len) __WINE_ALLOC_SIZE(1);
 void *xrealloc (void *op, size_t len) __WINE_ALLOC_SIZE(2);
 char *xstrdup( const char *str );
+void xfree (void *op);
 
 enum report_type {
     R_STATUS = 0,
-- 
1.6.2.1




More information about the wine-patches mailing list