reg: Clean-up and inform the user if RegDeleteValueW fails when deleting all values in a registry key

Hugh McMaster hugh.mcmaster at outlook.com
Thu Mar 31 04:26:56 CDT 2016


Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
---
 programs/reg/reg.c  | 11 ++++++-----
 programs/reg/reg.h  |  1 +
 programs/reg/reg.rc |  1 +
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/programs/reg/reg.c b/programs/reg/reg.c
index b2066e0..e56ddfe 100644
--- a/programs/reg/reg.c
+++ b/programs/reg/reg.c
@@ -512,14 +512,15 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
             {
                 rc = RegDeleteValueW(subkey, szValue);
                 if (rc != ERROR_SUCCESS)
-                    break;
+                {
+                    HeapFree(GetProcessHeap(), 0, szValue);
+                    RegCloseKey(subkey);
+                    output_message(STRING_VALUEALL_FAILED, key_name);
+                    return 1;
+                }
             }
             else break;
         }
-        if (rc != ERROR_SUCCESS)
-        {
-            /* FIXME  delete failed */
-        }
     }
     else if (value_name || value_empty)
     {
diff --git a/programs/reg/reg.h b/programs/reg/reg.h
index 679c72e..d84dbd9 100644
--- a/programs/reg/reg.h
+++ b/programs/reg/reg.h
@@ -44,3 +44,4 @@
 #define STRING_DELETE_VALUEALL  121
 #define STRING_DELETE_SUBKEY    122
 #define STRING_INVALID_STRING   123
+#define STRING_VALUEALL_FAILED  124
diff --git a/programs/reg/reg.rc b/programs/reg/reg.rc
index d153758..297ed48 100644
--- a/programs/reg/reg.rc
+++ b/programs/reg/reg.rc
@@ -49,4 +49,5 @@ STRINGTABLE
     STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
     STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
     STRING_INVALID_STRING, "reg: The option [/d] must be followed by a valid string\n"
+    STRING_VALUEALL_FAILED, "reg: Unable to delete all registry values in '%1'. An unexpected error occurred.\n"
 }
-- 
1.9.1




More information about the wine-patches mailing list