Francois Gouget : regedit: Pass the string length to REGPROC_export_string( ).

Alexandre Julliard julliard at winehq.org
Fri Nov 21 06:54:43 CST 2008


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

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Thu Nov 20 20:45:25 2008 +0100

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 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c
index 6d04a44..957f87c 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);




More information about the wine-cvs mailing list