regedit: Use a function to free the parser data.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
6f24426692
commit
e2ae9e3c58
|
@ -495,6 +495,15 @@ static LONG open_key(struct parser *parser, WCHAR *path)
|
||||||
return res;
|
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 {
|
enum reg_versions {
|
||||||
REG_VERSION_31,
|
REG_VERSION_31,
|
||||||
REG_VERSION_40,
|
REG_VERSION_40,
|
||||||
|
@ -802,9 +811,7 @@ static WCHAR *string_data_state(struct parser *parser, WCHAR *pos)
|
||||||
return line;
|
return line;
|
||||||
|
|
||||||
invalid:
|
invalid:
|
||||||
parser->data = NULL;
|
free_parser_data(parser);
|
||||||
parser->data_size = 0;
|
|
||||||
|
|
||||||
set_state(parser, LINE_START);
|
set_state(parser, LINE_START);
|
||||||
return line;
|
return line;
|
||||||
}
|
}
|
||||||
|
@ -826,10 +833,7 @@ static WCHAR *dword_data_state(struct parser *parser, WCHAR *pos)
|
||||||
return line;
|
return line;
|
||||||
|
|
||||||
invalid:
|
invalid:
|
||||||
HeapFree(GetProcessHeap(), 0, parser->data);
|
free_parser_data(parser);
|
||||||
parser->data = NULL;
|
|
||||||
parser->data_size = 0;
|
|
||||||
|
|
||||||
set_state(parser, LINE_START);
|
set_state(parser, LINE_START);
|
||||||
return line;
|
return line;
|
||||||
}
|
}
|
||||||
|
@ -870,10 +874,7 @@ static WCHAR *hex_data_state(struct parser *parser, WCHAR *pos)
|
||||||
return line;
|
return line;
|
||||||
|
|
||||||
invalid:
|
invalid:
|
||||||
HeapFree(GetProcessHeap(), 0, parser->data);
|
free_parser_data(parser);
|
||||||
parser->data = NULL;
|
|
||||||
parser->data_size = 0;
|
|
||||||
|
|
||||||
set_state(parser, LINE_START);
|
set_state(parser, LINE_START);
|
||||||
return line;
|
return line;
|
||||||
}
|
}
|
||||||
|
@ -890,10 +891,7 @@ static WCHAR *eol_backslash_state(struct parser *parser, WCHAR *pos)
|
||||||
return pos;
|
return pos;
|
||||||
|
|
||||||
invalid:
|
invalid:
|
||||||
HeapFree(GetProcessHeap(), 0, parser->data);
|
free_parser_data(parser);
|
||||||
parser->data = NULL;
|
|
||||||
parser->data_size = 0;
|
|
||||||
|
|
||||||
set_state(parser, LINE_START);
|
set_state(parser, LINE_START);
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
@ -918,10 +916,7 @@ static WCHAR *hex_multiline_state(struct parser *parser, WCHAR *pos)
|
||||||
return line;
|
return line;
|
||||||
|
|
||||||
invalid:
|
invalid:
|
||||||
HeapFree(GetProcessHeap(), 0, parser->data);
|
free_parser_data(parser);
|
||||||
parser->data = NULL;
|
|
||||||
parser->data_size = 0;
|
|
||||||
|
|
||||||
set_state(parser, LINE_START);
|
set_state(parser, LINE_START);
|
||||||
return line;
|
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,
|
RegSetValueExW(parser->hkey, parser->value_name, 0, parser->data_type,
|
||||||
parser->data, parser->data_size);
|
parser->data, parser->data_size);
|
||||||
|
|
||||||
if (parser->parse_type == REG_DWORD || parser->parse_type == REG_BINARY)
|
free_parser_data(parser);
|
||||||
HeapFree(GetProcessHeap(), 0, parser->data);
|
|
||||||
|
|
||||||
parser->data = NULL;
|
|
||||||
parser->data_size = 0;
|
|
||||||
|
|
||||||
if (parser->reg_version == REG_VERSION_31)
|
if (parser->reg_version == REG_VERSION_31)
|
||||||
set_state(parser, PARSE_WIN31_LINE);
|
set_state(parser, PARSE_WIN31_LINE);
|
||||||
|
|
Loading…
Reference in New Issue