Module: wine Branch: master Commit: 4873dd49aaa48cdb033a87908e1690f717e5d4da URL: https://source.winehq.org/git/wine.git/?a=commit;h=4873dd49aaa48cdb033a87908...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Nov 12 20:49:03 2019 +0100
mshtml: Fix checks for digit characters.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mshtml/editor.c | 2 +- dlls/mshtml/htmlbody.c | 2 +- dlls/mshtml/htmlelem.c | 4 ++-- dlls/mshtml/htmlelemcol.c | 2 +- dlls/mshtml/htmlnode.c | 2 +- dlls/mshtml/htmlselect.c | 2 +- dlls/mshtml/htmlstyle.c | 10 +++++----- dlls/mshtml/htmltable.c | 4 ++-- dlls/mshtml/mshtml_private.h | 5 +++++ dlls/mshtml/mutation.c | 8 ++++---- 10 files changed, 23 insertions(+), 18 deletions(-)
diff --git a/dlls/mshtml/editor.c b/dlls/mshtml/editor.c index 75a69976fe..0a1b4879bd 100644 --- a/dlls/mshtml/editor.c +++ b/dlls/mshtml/editor.c @@ -822,7 +822,7 @@ static HRESULT exec_composesettings(HTMLDocumentNode *doc, DWORD cmdexecopt, VAR if(!ptr) return S_OK;
- if(iswdigit(*++ptr)) { + if(is_digit(*++ptr)) { VARIANT v;
V_VT(&v) = VT_I4; diff --git a/dlls/mshtml/htmlbody.c b/dlls/mshtml/htmlbody.c index 1d032d62d3..981d93f9b4 100644 --- a/dlls/mshtml/htmlbody.c +++ b/dlls/mshtml/htmlbody.c @@ -95,7 +95,7 @@ static int comp_value(const WCHAR *ptr, int dpc) while(dpc--) { if(!*ptr) ret *= 16; - else if(iswdigit(ch = *ptr++)) + else if(is_digit(ch = *ptr++)) ret = ret*16 + (ch-'0'); else if('a' <= ch && ch <= 'f') ret = ret*16 + (ch-'a') + 10; diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index 49126935b3..a594337ead 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -700,7 +700,7 @@ static HRESULT HTMLRectCollection_get_dispid(DispatchEx *dispex, BSTR name, DWOR DWORD idx = 0; WCHAR *ptr;
- for(ptr = name; *ptr && iswdigit(*ptr); ptr++) + for(ptr = name; *ptr && is_digit(*ptr); ptr++) idx = idx*10 + (*ptr-'0'); if(*ptr) return DISP_E_UNKNOWNNAME; @@ -6061,7 +6061,7 @@ static HRESULT HTMLFiltersCollection_get_dispid(DispatchEx *dispex, BSTR name, D WCHAR *ptr; int idx = 0;
- for(ptr = name; *ptr && iswdigit(*ptr); ptr++) + for(ptr = name; *ptr && is_digit(*ptr); ptr++) idx = idx*10 + (*ptr-'0'); if(*ptr) return DISP_E_UNKNOWNNAME; diff --git a/dlls/mshtml/htmlelemcol.c b/dlls/mshtml/htmlelemcol.c index 62c7254c77..51cc90110f 100644 --- a/dlls/mshtml/htmlelemcol.c +++ b/dlls/mshtml/htmlelemcol.c @@ -562,7 +562,7 @@ static HRESULT HTMLElementCollection_get_dispid(DispatchEx *dispex, BSTR name, D if(!*name) return DISP_E_UNKNOWNNAME;
- for(ptr = name; *ptr && iswdigit(*ptr); ptr++) + for(ptr = name; *ptr && is_digit(*ptr); ptr++) idx = idx*10 + (*ptr-'0');
if(*ptr) { diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c index faffb6bd02..d80c615e72 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -373,7 +373,7 @@ static HRESULT HTMLDOMChildrenCollection_get_dispid(DispatchEx *dispex, BSTR nam DWORD idx=0; UINT32 len = 0;
- for(ptr = name; *ptr && iswdigit(*ptr); ptr++) + for(ptr = name; *ptr && is_digit(*ptr); ptr++) idx = idx*10 + (*ptr-'0'); if(*ptr) return DISP_E_UNKNOWNNAME; diff --git a/dlls/mshtml/htmlselect.c b/dlls/mshtml/htmlselect.c index 21d4fc7acb..739da9bf0f 100644 --- a/dlls/mshtml/htmlselect.c +++ b/dlls/mshtml/htmlselect.c @@ -1190,7 +1190,7 @@ static HRESULT HTMLSelectElement_get_dispid(HTMLDOMNode *iface, BSTR name, DWORD const WCHAR *ptr; DWORD idx = 0;
- for(ptr = name; *ptr && iswdigit(*ptr); ptr++) { + for(ptr = name; *ptr && is_digit(*ptr); ptr++) { idx = idx*10 + (*ptr-'0'); if(idx > MSHTML_CUSTOM_DISPID_CNT) { WARN("too big idx\n"); diff --git a/dlls/mshtml/htmlstyle.c b/dlls/mshtml/htmlstyle.c index 39fd489bda..15e2f26303 100644 --- a/dlls/mshtml/htmlstyle.c +++ b/dlls/mshtml/htmlstyle.c @@ -871,7 +871,7 @@ static void fix_px_value(nsAString *nsstr) if(!*ptr) break;
- while(*ptr && iswdigit(*ptr)) + while(*ptr && is_digit(*ptr)) ptr++;
if(!*ptr || iswspace(*ptr)) { @@ -1096,7 +1096,7 @@ static HRESULT get_nsstyle_property_var(nsIDOMCSSStyleDeclaration *nsstyle, styl ptr++; }
- while(iswdigit(*ptr)) + while(is_digit(*ptr)) i = i*10 + (*ptr++ - '0');
if(!*ptr) { @@ -1228,7 +1228,7 @@ static HRESULT get_nsstyle_pixel_val(HTMLStyle *This, styleid_t sid, LONG *p)
if(*ptr == '.') { /* Skip all digits. We have tests showing that we should not round the value. */ - while(iswdigit(*++ptr)); + while(is_digit(*++ptr)); } }
@@ -2953,11 +2953,11 @@ static void update_filter(HTMLStyle *This)
ptr2 += ARRAY_SIZE(opacityW);
- while(iswdigit(*ptr2)) + while(is_digit(*ptr2)) fval = fval*10.0f + (float)(*ptr2++ - '0');
if(*ptr2 == '.') { - while(iswdigit(*++ptr2)) { + while(is_digit(*++ptr2)) { fval += e * (float)(*ptr2++ - '0'); e *= 0.1f; } diff --git a/dlls/mshtml/htmltable.c b/dlls/mshtml/htmltable.c index 972a2175bb..a37ab35413 100644 --- a/dlls/mshtml/htmltable.c +++ b/dlls/mshtml/htmltable.c @@ -1021,9 +1021,9 @@ static HRESULT nsstr_to_truncated_bstr(const nsAString *nsstr, BSTR *ret_ptr)
nsAString_GetData(nsstr, &str);
- for(ptr = str; iswdigit(*ptr); ptr++); + for(ptr = str; is_digit(*ptr); ptr++); if(*ptr == '.') { - for(end = ptr++; iswdigit(*ptr); ptr++); + for(end = ptr++; is_digit(*ptr); ptr++); if(*ptr) end = NULL; } diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 441da2019c..9612b32608 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -1363,6 +1363,11 @@ static inline VARIANT_BOOL variant_bool(BOOL b) return b ? VARIANT_TRUE : VARIANT_FALSE; }
+static inline BOOL is_digit(WCHAR c) +{ + return '0' <= c && c <= '9'; +} + #ifdef __i386__ extern void *call_thiscall_func; #endif diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c index 6903fe8652..96490f9abd 100644 --- a/dlls/mshtml/mutation.c +++ b/dlls/mshtml/mutation.c @@ -109,16 +109,16 @@ static PRUnichar *handle_insert_comment(HTMLDocumentNode *doc, const PRUnichar * while(iswspace(*ptr)) ptr++;
- if(!iswdigit(*ptr)) + if(!is_digit(*ptr)) return NULL; - while(iswdigit(*ptr)) + while(is_digit(*ptr)) majorv = majorv*10 + (*ptr++ - '0');
if(*ptr == '.') { ptr++; - if(!iswdigit(*ptr)) + if(!is_digit(*ptr)) return NULL; - while(iswdigit(*ptr)) + while(is_digit(*ptr)) minorv = minorv*10 + (*ptr++ - '0'); }