[PATCH 3/3] regedit: Process the next file, if any, on error (v2)
Sebastian Lackner
sebastian at fds-team.de
Tue Jul 5 09:09:58 CDT 2016
On 05.07.2016 11:13, Hugh McMaster wrote:
> Changes since v1:
> * Do not leak memory when moving to the next file.
>
> Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
> ---
> programs/regedit/regedit.c | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/programs/regedit/regedit.c b/programs/regedit/regedit.c
> index 04dd317..8a6a975 100644
> --- a/programs/regedit/regedit.c
> +++ b/programs/regedit/regedit.c
> @@ -88,7 +88,7 @@ typedef enum {
> ACTION_ADD, ACTION_EXPORT, ACTION_DELETE
> } REGEDIT_ACTION;
>
> -static BOOL PerformRegAction(REGEDIT_ACTION action, WCHAR **argv, int *i)
> +static void PerformRegAction(REGEDIT_ACTION action, WCHAR **argv, int *i)
> {
> switch (action) {
> case ACTION_ADD: {
> @@ -113,7 +113,9 @@ static BOOL PerformRegAction(REGEDIT_ACTION action, WCHAR **argv, int *i)
> if (size == 0)
> {
> output_message(STRING_FILE_NOT_FOUND, filename);
> - exit(1);
> + if (realname)
> + HeapFree(GetProcessHeap(), 0, realname);
I haven't reviewed the whole series, but passing a NULL pointer to HeapFree()
is perfectly fine, and its better to avoid such checks.
> + return;
> }
> reg_file = _wfopen(realname, rb_mode);
> if (reg_file == NULL)
> @@ -121,7 +123,9 @@ static BOOL PerformRegAction(REGEDIT_ACTION action, WCHAR **argv, int *i)
> WCHAR regedit[] = {'r','e','g','e','d','i','t',0};
> _wperror(regedit);
> output_message(STRING_CANNOT_OPEN_FILE, filename);
> - exit(1);
> + if (realname)
> + HeapFree(GetProcessHeap(), 0, realname);
Same here.
> + return;
> }
> import_registry_file(reg_file);
> if (realname)
> @@ -150,7 +154,6 @@ static BOOL PerformRegAction(REGEDIT_ACTION action, WCHAR **argv, int *i)
> exit(1);
> break;
> }
> - return TRUE;
> }
>
> BOOL ProcessCmdLine(WCHAR *cmdline)
>
More information about the wine-devel
mailing list