Francois Gouget : regedit: Simplify REGPROC_export_string().
Alexandre Julliard
julliard at winehq.org
Wed Nov 12 07:18:50 CST 2008
Module: wine
Branch: master
Commit: d1d3db4183a0c917ed4813de7eb3f879916a3168
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d1d3db4183a0c917ed4813de7eb3f879916a3168
Author: Francois Gouget <fgouget at codeweavers.com>
Date: Wed Nov 12 11:29:09 2008 +0100
regedit: Simplify REGPROC_export_string().
---
programs/regedit/regproc.c | 40 ++++++++++++++--------------------------
1 files changed, 14 insertions(+), 26 deletions(-)
diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c
index 8ad3775..07fe243 100644
--- a/programs/regedit/regproc.c
+++ b/programs/regedit/regproc.c
@@ -892,49 +892,37 @@ static void REGPROC_resize_char_buffer(WCHAR **buffer, DWORD *len, DWORD require
static void REGPROC_export_string(WCHAR **line_buf, DWORD *line_buf_size, DWORD *line_len, WCHAR *str)
{
DWORD len = lstrlenW(str);
- DWORD i;
+ DWORD i, pos;
DWORD extra = 0;
REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + len + 10);
/* escaping characters */
+ pos = *line_len;
for (i = 0; i < len; i++) {
WCHAR c = str[i];
switch (c) {
- case '\\':
- {
- const WCHAR escape[] = {'\\','\\'};
-
- REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + len + extra + 1);
- memcpy(*line_buf + *line_len + i + extra, escape, 2 * sizeof(WCHAR));
+ case '\n':
extra++;
+ REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + len + extra);
+ (*line_buf)[pos++] = '\\';
+ (*line_buf)[pos++] = 'n';
break;
- }
- case '"':
- {
- const WCHAR escape[] = {'\\','"'};
- REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + len + extra + 1);
- memcpy(*line_buf + *line_len + i + extra, escape, 2 * sizeof(WCHAR));
+ case '\\':
+ case '"':
extra++;
- break;
- }
- case '\n':
- {
- const WCHAR escape[] = {'\\','n'};
+ REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + len + extra);
+ (*line_buf)[pos++] = '\\';
+ /* Fall through */
- REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + len + extra + 1);
- memcpy(*line_buf + *line_len + i + extra, escape, 2 * sizeof(WCHAR));
- extra++;
- break;
- }
default:
- memcpy(*line_buf + *line_len + i + extra, &c, sizeof(WCHAR));
+ (*line_buf)[pos++] = c;
break;
}
}
- *line_len += len + extra;
- *(*line_buf + *line_len) = 0;
+ (*line_buf)[pos] = '\0';
+ *line_len = pos;
}
/******************************************************************************
More information about the wine-cvs
mailing list