From 3ef0b0ef2d92b4d5105fc1092afdbf6ba9819005 Mon Sep 17 00:00:00 2001 From: Francois Gouget Date: Thu, 20 Nov 2008 20:45:25 +0100 Subject: [PATCH] regedit: Pass the string length to REGPROC_export_string(). We already know it in the caller so this saves us one lstrlenW() call. --- programs/regedit/regproc.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c index 6d04a44a9b1..957f87c4eba 100644 --- a/programs/regedit/regproc.c +++ b/programs/regedit/regproc.c @@ -890,22 +890,21 @@ static void REGPROC_resize_char_buffer(WCHAR **buffer, DWORD *len, DWORD require /****************************************************************************** * Prints string str to file */ -static void REGPROC_export_string(WCHAR **line_buf, DWORD *line_buf_size, DWORD *line_len, WCHAR *str) +static void REGPROC_export_string(WCHAR **line_buf, DWORD *line_buf_size, DWORD *line_len, WCHAR *str, DWORD str_len) { - DWORD len = lstrlenW(str); DWORD i, pos; DWORD extra = 0; - REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + len + 10); + REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + str_len + 10); /* escaping characters */ pos = *line_len; - for (i = 0; i < len; i++) { + for (i = 0; i < str_len; i++) { WCHAR c = str[i]; switch (c) { case '\n': extra++; - REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + len + extra); + REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + str_len + extra); (*line_buf)[pos++] = '\\'; (*line_buf)[pos++] = 'n'; break; @@ -913,7 +912,7 @@ static void REGPROC_export_string(WCHAR **line_buf, DWORD *line_buf_size, DWORD case '\\': case '"': extra++; - REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + len + extra); + REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + str_len + extra); (*line_buf)[pos++] = '\\'; /* Fall through */ @@ -1043,7 +1042,7 @@ static void export_hkey(FILE *file, HKEY key, line_len += len; if (val_size1) - REGPROC_export_string(line_buf, line_buf_size, &line_len, (WCHAR*) *val_buf); + REGPROC_export_string(line_buf, line_buf_size, &line_len, (WCHAR*)*val_buf, val_size1 / sizeof(WCHAR) - 1); REGPROC_resize_char_buffer(line_buf, line_buf_size, line_len + lstrlenW(end)); lstrcpyW(*line_buf + line_len, end); -- 2.11.4.GIT