[Server/Registry] Memleak of tmp in save_branch's errorpath

Peter Berg Larsen pebl at math.ku.dk
Wed Mar 9 16:22:44 CST 2005


Changelog:
  Tmp was not freed in case of errors in save_branch(...).

Index: server/registry.c
===================================================================
RCS file: /home/wine/wine/server/registry.c,v
retrieving revision 1.62
diff -u -r1.62 registry.c
--- server/registry.c	24 Feb 2005 19:43:53 -0000	1.62
+++ server/registry.c	9 Mar 2005 21:53:43 -0000
@@ -1611,7 +1611,7 @@
     {
         sprintf( p, "reg%lx%04x.tmp", (long) getpid(), count++ );
         if ((fd = open( tmp, O_CREAT | O_EXCL | O_WRONLY, 0666 )) != -1) break;
-        if (errno != EEXIST) goto done;
+        if (errno != EEXIST) goto done_tmp;
         close( fd );
     }

@@ -1622,7 +1622,7 @@
     {
         if (tmp) unlink( tmp );
         close( fd );
-        goto done;
+        goto done_tmp;
     }

     if (debug_level > 1)
@@ -1639,9 +1639,10 @@
         /* if successfully written, rename to final name */
         if (ret) ret = !rename( tmp, path );
         if (!ret) unlink( tmp );
-        free( tmp );
     }

+done_tmp:
+    if (tmp) free(tmp);
 done:
     if (real) free( real );
     if (ret) make_clean( key );





More information about the wine-patches mailing list