Jacek Caban : jscript: Added jsstr_flush helper and use it in array_join.

Alexandre Julliard julliard at winehq.org
Tue Mar 5 12:59:17 CST 2013


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Mar  5 11:48:55 2013 +0100

jscript: Added jsstr_flush helper and use it in array_join.

---

 dlls/jscript/array.c |   17 ++++-------------
 dlls/jscript/jsstr.h |    7 +++++++
 2 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/dlls/jscript/array.c b/dlls/jscript/array.c
index fef37e6..5987ef1 100644
--- a/dlls/jscript/array.c
+++ b/dlls/jscript/array.c
@@ -286,15 +286,10 @@ static HRESULT array_join(script_ctx_t *ctx, jsdisp_t *array, DWORD length, cons
         if(SUCCEEDED(hres))
             ret = jsstr_alloc_buf(len);
         if(ret) {
-            unsigned tmplen;
-
             ptr = ret->str;
 
-            if(str_tab[0]) {
-                tmplen = jsstr_length(str_tab[0]);
-                memcpy(ptr, str_tab[0]->str, tmplen*sizeof(WCHAR));
-                ptr += tmplen;
-            }
+            if(str_tab[0])
+                ptr += jsstr_flush(str_tab[0], ptr);
 
             for(i=1; i < length; i++) {
                 if(seplen) {
@@ -302,13 +297,9 @@ static HRESULT array_join(script_ctx_t *ctx, jsdisp_t *array, DWORD length, cons
                     ptr += seplen;
                 }
 
-                if(str_tab[i]) {
-                    tmplen = jsstr_length(str_tab[i]);
-                    memcpy(ptr, str_tab[i]->str, tmplen*sizeof(WCHAR));
-                    ptr += tmplen;
-                }
+                if(str_tab[i])
+                    ptr += jsstr_flush(str_tab[i], ptr);
             }
-            *ptr=0;
         }else {
             hres = E_OUTOFMEMORY;
         }
diff --git a/dlls/jscript/jsstr.h b/dlls/jscript/jsstr.h
index 8883dcb..cbe68ef 100644
--- a/dlls/jscript/jsstr.h
+++ b/dlls/jscript/jsstr.h
@@ -59,6 +59,13 @@ static inline BOOL jsstr_eq(jsstr_t *str1, jsstr_t *str2)
     return len == jsstr_length(str2) && !memcmp(str1->str, str2->str, len*sizeof(WCHAR));
 }
 
+static inline unsigned jsstr_flush(jsstr_t *str, WCHAR *buf)
+{
+    unsigned len = jsstr_length(str);
+    memcpy(buf, str->str, len*sizeof(WCHAR));
+    return len;
+}
+
 static inline jsstr_t *jsstr_substr(jsstr_t *str, unsigned off, unsigned len)
 {
     return jsstr_alloc_len(str->str+off, len);




More information about the wine-cvs mailing list