[REG]
authorJohannes Anderwald <johannes.anderwald@reactos.org>
Sun, 13 Dec 2009 16:05:15 +0000 (16:05 +0000)
committerJohannes Anderwald <johannes.anderwald@reactos.org>
Sun, 13 Dec 2009 16:05:15 +0000 (16:05 +0000)
- Fix a memory leak and bug in the deletion routine. If the buffer value_name was had been smaller than the longest key, then deletion of all values would have failed.
- Fixed by Amine Khaldi
[XCOPY]
- Remove unnecessary assignment
- By Amine Khaldi

svn path=/trunk/; revision=44563

reactos/base/applications/cmdutils/reg/reg.c
reactos/base/applications/cmdutils/xcopy/xcopy.c

index a538d81..d18540e 100644 (file)
@@ -295,20 +295,24 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
             return 1;
         }
         maxValue++;
+        
         szValue = HeapAlloc(GetProcessHeap(),0,maxValue*sizeof(WCHAR));
+        if (!szValue) return 1;
 
         while (1)
         {
             count = maxValue;
-            rc = RegEnumValueW(subkey, 0, value_name, &count, NULL, NULL, NULL, NULL);
+            rc = RegEnumValueW(subkey, 0, szValue, &count, NULL, NULL, NULL, NULL);
             if (rc == ERROR_SUCCESS)
             {
-                rc = RegDeleteValueW(subkey,value_name);
+                rc = RegDeleteValueW(subkey,szValue);
                 if (rc != ERROR_SUCCESS)
                     break;
             }
             else break;
         }
+        
+        HeapFree(GetProcessHeap(), 0, szValue); 
         if (rc != ERROR_SUCCESS)
         {
             /* FIXME  delete failed */
index eaff10c..f996144 100644 (file)
@@ -261,10 +261,10 @@ int wmain (int argc, WCHAR *argvW[])
     WINE_TRACE("Destination : '%s'\n", wine_dbgstr_w(supplieddestination));
 
     /* Extract required information from source specification */
-    rc = XCOPY_ProcessSourceParm(suppliedsource, sourcestem, sourcespec, flags);
+    XCOPY_ProcessSourceParm(suppliedsource, sourcestem, sourcespec, flags);
 
     /* Extract required information from destination specification */
-    rc = XCOPY_ProcessDestParm(supplieddestination, destinationstem,
+    XCOPY_ProcessDestParm(supplieddestination, destinationstem,
                                destinationspec, sourcespec, flags);
 
     /* Trace out the resulting information */