Hugh McMaster : regedit: Use a function to free the parser data.

Alexandre Julliard julliard at winehq.org
Fri Jul 7 14:10:08 CDT 2017


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

Author: Hugh McMaster <hugh.mcmaster at outlook.com>
Date:   Fri Jul  7 11:47:51 2017 +0000

regedit: Use a function to free the parser data.

Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 programs/regedit/regproc.c | 39 +++++++++++++++------------------------
 1 file changed, 15 insertions(+), 24 deletions(-)

diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c
index 9680bd2..a4158c2 100644
--- a/programs/regedit/regproc.c
+++ b/programs/regedit/regproc.c
@@ -495,6 +495,15 @@ static LONG open_key(struct parser *parser, WCHAR *path)
     return res;
 }
 
+static void free_parser_data(struct parser *parser)
+{
+    if (parser->parse_type == REG_DWORD || parser->parse_type == REG_BINARY)
+        HeapFree(GetProcessHeap(), 0, parser->data);
+
+    parser->data = NULL;
+    parser->data_size = 0;
+}
+
 enum reg_versions {
     REG_VERSION_31,
     REG_VERSION_40,
@@ -802,9 +811,7 @@ static WCHAR *string_data_state(struct parser *parser, WCHAR *pos)
     return line;
 
 invalid:
-    parser->data = NULL;
-    parser->data_size = 0;
-
+    free_parser_data(parser);
     set_state(parser, LINE_START);
     return line;
 }
@@ -826,10 +833,7 @@ static WCHAR *dword_data_state(struct parser *parser, WCHAR *pos)
     return line;
 
 invalid:
-    HeapFree(GetProcessHeap(), 0, parser->data);
-    parser->data = NULL;
-    parser->data_size = 0;
-
+    free_parser_data(parser);
     set_state(parser, LINE_START);
     return line;
 }
@@ -870,10 +874,7 @@ static WCHAR *hex_data_state(struct parser *parser, WCHAR *pos)
     return line;
 
 invalid:
-    HeapFree(GetProcessHeap(), 0, parser->data);
-    parser->data = NULL;
-    parser->data_size = 0;
-
+    free_parser_data(parser);
     set_state(parser, LINE_START);
     return line;
 }
@@ -890,10 +891,7 @@ static WCHAR *eol_backslash_state(struct parser *parser, WCHAR *pos)
     return pos;
 
 invalid:
-    HeapFree(GetProcessHeap(), 0, parser->data);
-    parser->data = NULL;
-    parser->data_size = 0;
-
+    free_parser_data(parser);
     set_state(parser, LINE_START);
     return p;
 }
@@ -918,10 +916,7 @@ static WCHAR *hex_multiline_state(struct parser *parser, WCHAR *pos)
     return line;
 
 invalid:
-    HeapFree(GetProcessHeap(), 0, parser->data);
-    parser->data = NULL;
-    parser->data_size = 0;
-
+    free_parser_data(parser);
     set_state(parser, LINE_START);
     return line;
 }
@@ -941,11 +936,7 @@ static WCHAR *set_value_state(struct parser *parser, WCHAR *pos)
     RegSetValueExW(parser->hkey, parser->value_name, 0, parser->data_type,
                    parser->data, parser->data_size);
 
-    if (parser->parse_type == REG_DWORD || parser->parse_type == REG_BINARY)
-        HeapFree(GetProcessHeap(), 0, parser->data);
-
-    parser->data = NULL;
-    parser->data_size = 0;
+    free_parser_data(parser);
 
     if (parser->reg_version == REG_VERSION_31)
         set_state(parser, PARSE_WIN31_LINE);




More information about the wine-cvs mailing list