Commit 9257ab8a authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

mshtml: Factor out getting style value string from Gecko value.

parent ff17abc6
...@@ -407,18 +407,35 @@ static HRESULT get_nsstyle_attr_nsval(nsIDOMCSSStyleDeclaration *nsstyle, stylei ...@@ -407,18 +407,35 @@ static HRESULT get_nsstyle_attr_nsval(nsIDOMCSSStyleDeclaration *nsstyle, stylei
return NS_OK; return NS_OK;
} }
static HRESULT nsstyle_to_bstr(const WCHAR *val, DWORD flags, BSTR *p)
{
BSTR ret;
if(!*val) {
*p = NULL;
return S_OK;
}
ret = SysAllocString(val);
if(!ret)
return E_OUTOFMEMORY;
*p = ret;
return S_OK;
}
HRESULT get_nsstyle_attr(nsIDOMCSSStyleDeclaration *nsstyle, styleid_t sid, BSTR *p) HRESULT get_nsstyle_attr(nsIDOMCSSStyleDeclaration *nsstyle, styleid_t sid, BSTR *p)
{ {
nsAString str_value; nsAString str_value;
const PRUnichar *value; const PRUnichar *value;
HRESULT hres;
nsAString_Init(&str_value, NULL); nsAString_Init(&str_value, NULL);
get_nsstyle_attr_nsval(nsstyle, sid, &str_value); get_nsstyle_attr_nsval(nsstyle, sid, &str_value);
nsAString_GetData(&str_value, &value); nsAString_GetData(&str_value, &value);
*p = *value ? SysAllocString(value) : NULL; hres = nsstyle_to_bstr(value, 0, p);
nsAString_Finish(&str_value); nsAString_Finish(&str_value);
TRACE("%s -> %s\n", debugstr_w(style_tbl[sid].name), debugstr_w(*p)); TRACE("%s -> %s\n", debugstr_w(style_tbl[sid].name), debugstr_w(*p));
...@@ -430,6 +447,7 @@ HRESULT get_nsstyle_attr_var(nsIDOMCSSStyleDeclaration *nsstyle, styleid_t sid, ...@@ -430,6 +447,7 @@ HRESULT get_nsstyle_attr_var(nsIDOMCSSStyleDeclaration *nsstyle, styleid_t sid,
nsAString str_value; nsAString str_value;
const PRUnichar *value; const PRUnichar *value;
BOOL set = FALSE; BOOL set = FALSE;
HRESULT hres = S_OK;
nsAString_Init(&str_value, NULL); nsAString_Init(&str_value, NULL);
...@@ -458,22 +476,19 @@ HRESULT get_nsstyle_attr_var(nsIDOMCSSStyleDeclaration *nsstyle, styleid_t sid, ...@@ -458,22 +476,19 @@ HRESULT get_nsstyle_attr_var(nsIDOMCSSStyleDeclaration *nsstyle, styleid_t sid,
} }
if(!set) { if(!set) {
BSTR str = NULL; BSTR str;
if(*value) { hres = nsstyle_to_bstr(value, flags, &str);
str = SysAllocString(value); if(SUCCEEDED(hres)) {
if(!str) V_VT(p) = VT_BSTR;
return E_OUTOFMEMORY; V_BSTR(p) = str;
} }
V_VT(p) = VT_BSTR;
V_BSTR(p) = str;
} }
nsAString_Finish(&str_value); nsAString_Finish(&str_value);
TRACE("%s -> %s\n", debugstr_w(style_tbl[sid].name), debugstr_variant(p)); TRACE("%s -> %s\n", debugstr_w(style_tbl[sid].name), debugstr_variant(p));
return S_OK; return hres;
} }
static inline HRESULT get_style_attr(HTMLStyle *This, styleid_t sid, BSTR *p) static inline HRESULT get_style_attr(HTMLStyle *This, styleid_t sid, BSTR *p)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment