Jacek Caban : mshtml: Improved helper for returning color as VARIANT in HTMLBodyElement implementation .
Alexandre Julliard
julliard at winehq.org
Fri Apr 13 11:03:21 CDT 2012
Module: wine
Branch: master
Commit: 4c66a4626bef026cf496585ac64d85d4c1ec10f3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4c66a4626bef026cf496585ac64d85d4c1ec10f3
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Apr 13 12:00:55 2012 +0200
mshtml: Improved helper for returning color as VARIANT in HTMLBodyElement implementation.
---
dlls/mshtml/htmlbody.c | 40 ++++++++++++++++++----------------------
1 files changed, 18 insertions(+), 22 deletions(-)
diff --git a/dlls/mshtml/htmlbody.c b/dlls/mshtml/htmlbody.c
index 26f5574..d96142a 100644
--- a/dlls/mshtml/htmlbody.c
+++ b/dlls/mshtml/htmlbody.c
@@ -178,10 +178,16 @@ static BOOL variant_to_nscolor(const VARIANT *v, nsAString *nsstr)
}
-static void nscolor_to_variant(const nsAString *nsstr, VARIANT *p)
+static HRESULT return_nscolor(nsresult nsres, nsAString *nsstr, VARIANT *p)
{
const PRUnichar *color;
+ if(NS_FAILED(nsres)) {
+ ERR("failed: %08x\n", nsres);
+ nsAString_Finish(nsstr);
+ return E_FAIL;
+ }
+
nsAString_GetData(nsstr, &color);
if(*color == '#') {
@@ -190,7 +196,15 @@ static void nscolor_to_variant(const nsAString *nsstr, VARIANT *p)
}else {
V_VT(p) = VT_BSTR;
V_BSTR(p) = SysAllocString(color);
+ if(!V_BSTR(p)) {
+ nsAString_Finish(nsstr);
+ return E_OUTOFMEMORY;
+ }
}
+
+ nsAString_Finish(nsstr);
+ TRACE("ret %s\n", debugstr_variant(p));
+ return S_OK;
}
static inline HTMLBodyElement *impl_from_IHTMLBodyElement(IHTMLBodyElement *iface)
@@ -502,13 +516,7 @@ static HRESULT WINAPI HTMLBodyElement_get_link(IHTMLBodyElement *iface, VARIANT
nsAString_Init(&link_str, NULL);
nsres = nsIDOMHTMLBodyElement_GetLink(This->nsbody, &link_str);
- if(NS_FAILED(nsres))
- ERR("GetLink failed: %08x\n", nsres);
-
- nscolor_to_variant(&link_str, p);
- nsAString_Finish(&link_str);
-
- return S_OK;
+ return return_nscolor(nsres, &link_str, p);
}
static HRESULT WINAPI HTMLBodyElement_put_vLink(IHTMLBodyElement *iface, VARIANT v)
@@ -540,13 +548,7 @@ static HRESULT WINAPI HTMLBodyElement_get_vLink(IHTMLBodyElement *iface, VARIANT
nsAString_Init(&vlink_str, NULL);
nsres = nsIDOMHTMLBodyElement_GetVLink(This->nsbody, &vlink_str);
- if(NS_FAILED(nsres))
- ERR("GetLink failed: %08x\n", nsres);
-
- nscolor_to_variant(&vlink_str, p);
- nsAString_Finish(&vlink_str);
-
- return S_OK;
+ return return_nscolor(nsres, &vlink_str, p);
}
static HRESULT WINAPI HTMLBodyElement_put_aLink(IHTMLBodyElement *iface, VARIANT v)
@@ -578,13 +580,7 @@ static HRESULT WINAPI HTMLBodyElement_get_aLink(IHTMLBodyElement *iface, VARIANT
nsAString_Init(&alink_str, NULL);
nsres = nsIDOMHTMLBodyElement_GetALink(This->nsbody, &alink_str);
- if(NS_FAILED(nsres))
- ERR("GetALink failed: %08x\n", nsres);
-
- nscolor_to_variant(&alink_str, p);
- nsAString_Finish(&alink_str);
-
- return S_OK;
+ return return_nscolor(nsres, &alink_str, p);
}
static HRESULT WINAPI HTMLBodyElement_put_onload(IHTMLBodyElement *iface, VARIANT v)
More information about the wine-cvs
mailing list