Jacek Caban : jscript: Added jsstr_extract helper and use it in String. charCodeAt implementation.
Alexandre Julliard
julliard at winehq.org
Thu Mar 28 15:30:23 CDT 2013
Module: wine
Branch: master
Commit: 618b88ef30b0d5b955e1f3c65f6da0896aafac6b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=618b88ef30b0d5b955e1f3c65f6da0896aafac6b
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Mar 28 11:01:52 2013 +0100
jscript: Added jsstr_extract helper and use it in String.charCodeAt implementation.
---
dlls/jscript/jsstr.h | 13 ++++++++++++-
dlls/jscript/string.c | 7 +++++--
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/dlls/jscript/jsstr.h b/dlls/jscript/jsstr.h
index 09893fa..28742ac 100644
--- a/dlls/jscript/jsstr.h
+++ b/dlls/jscript/jsstr.h
@@ -65,6 +65,11 @@ 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 void jsstr_extract(jsstr_t *str, unsigned off, unsigned len, WCHAR *buf)
+{
+ memcpy(buf, str->str+off, len*sizeof(WCHAR));
+}
+
static inline unsigned jsstr_flush(jsstr_t *str, WCHAR *buf)
{
unsigned len = jsstr_length(str);
@@ -74,7 +79,13 @@ static inline unsigned jsstr_flush(jsstr_t *str, WCHAR *buf)
static inline jsstr_t *jsstr_substr(jsstr_t *str, unsigned off, unsigned len)
{
- return jsstr_alloc_len(str->str+off, len);
+ jsstr_t *ret;
+ WCHAR *ptr;
+
+ ptr = jsstr_alloc_buf(len, &ret);
+ if(ptr)
+ jsstr_extract(str, off, len, ptr);
+ return ret;
}
int jsstr_cmp(jsstr_t*,jsstr_t*) DECLSPEC_HIDDEN;
diff --git a/dlls/jscript/string.c b/dlls/jscript/string.c
index 7672fb7..64d0f1e 100644
--- a/dlls/jscript/string.c
+++ b/dlls/jscript/string.c
@@ -347,8 +347,11 @@ static HRESULT String_charCodeAt(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags,
idx = d;
}
- if(r)
- *r = jsval_number(str->str[idx]);
+ if(r) {
+ WCHAR c;
+ jsstr_extract(str, idx, 1, &c);
+ *r = jsval_number(c);
+ }
jsstr_release(str);
return S_OK;
More information about the wine-cvs
mailing list