diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c
index 11b434fe9fb98c8cf39905fd5175704d12c7f7a6..0ae142a99e5a44d7dd957b0f99c3a54c8efb56b1 100644
--- a/dlls/jscript/engine.c
+++ b/dlls/jscript/engine.c
@@ -1509,8 +1509,11 @@ static HRESULT add_eval(script_ctx_t *ctx, VARIANT *lval, VARIANT *rval, jsexcep
 
             V_VT(retv) = VT_BSTR;
             V_BSTR(retv) = SysAllocStringLen(NULL, len1+len2);
-            memcpy(V_BSTR(retv), lstr, len1*sizeof(WCHAR));
-            memcpy(V_BSTR(retv)+len1, rstr, (len2+1)*sizeof(WCHAR));
+            if(len1)
+                memcpy(V_BSTR(retv), lstr, len1*sizeof(WCHAR));
+            if(len2)
+                memcpy(V_BSTR(retv)+len1, rstr, len2*sizeof(WCHAR));
+            V_BSTR(retv)[len1+len2] = 0;
         }
 
         if(V_VT(&l) != VT_BSTR)