diff --git a/dlls/mshtml/htmlframebase.c b/dlls/mshtml/htmlframebase.c
index 6c52e53b6b..90669e07fc 100644
--- a/dlls/mshtml/htmlframebase.c
+++ b/dlls/mshtml/htmlframebase.c
@@ -155,41 +155,21 @@ static HRESULT WINAPI HTMLFrameBase_get_name(IHTMLFrameBase *iface, BSTR *p)
{
HTMLFrameBase *This = impl_from_IHTMLFrameBase(iface);
nsAString nsstr;
- const PRUnichar *strdata;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
- if(This->nsframe) {
- nsAString_Init(&nsstr, NULL);
- nsres = nsIDOMHTMLFrameElement_GetName(This->nsframe, &nsstr);
- }else if(This->nsiframe) {
- nsAString_Init(&nsstr, NULL);
- nsres = nsIDOMHTMLIFrameElement_GetName(This->nsiframe, &nsstr);
- }else {
+ if(!This->nsframe && !This->nsiframe) {
ERR("No attached ns frame object\n");
return E_UNEXPECTED;
}
- if(NS_FAILED(nsres)) {
- ERR("GetName failed: 0x%08x\n", nsres);
- nsAString_Finish(&nsstr);
- return E_FAIL;
- }
-
- nsAString_GetData(&nsstr, &strdata);
- if(*strdata) {
- *p = SysAllocString(strdata);
- if(!*p) {
- nsAString_Finish(&nsstr);
- return E_OUTOFMEMORY;
- }
- }else
- *p = NULL;
-
- nsAString_Finish(&nsstr);
-
- return S_OK;
+ nsAString_Init(&nsstr, NULL);
+ if(This->nsframe)
+ nsres = nsIDOMHTMLFrameElement_GetName(This->nsframe, &nsstr);
+ else
+ nsres = nsIDOMHTMLIFrameElement_GetName(This->nsiframe, &nsstr);
+ return return_nsstr(nsres, &nsstr, p);
}
static HRESULT WINAPI HTMLFrameBase_put_border(IHTMLFrameBase *iface, VARIANT v)
diff --git a/dlls/mshtml/htmlimg.c b/dlls/mshtml/htmlimg.c
index 79a3044f22..7d4817d079 100644
--- a/dlls/mshtml/htmlimg.c
+++ b/dlls/mshtml/htmlimg.c
@@ -251,17 +251,7 @@ static HRESULT WINAPI HTMLImgElement_get_alt(IHTMLImgElement *iface, BSTR *p)
nsAString_Init(&alt_str, NULL);
nsres = nsIDOMHTMLImageElement_GetAlt(This->nsimg, &alt_str);
- if(NS_SUCCEEDED(nsres)) {
- const PRUnichar *alt;
-
- nsAString_GetData(&alt_str, &alt);
- *p = *alt ? SysAllocString(alt) : NULL;
- }else {
- ERR("GetAlt failed: %08x\n", nsres);
- }
- nsAString_Finish(&alt_str);
-
- return NS_SUCCEEDED(nsres) ? S_OK : E_FAIL;
+ return return_nsstr(nsres, &alt_str, p);
}
static HRESULT WINAPI HTMLImgElement_put_src(IHTMLImgElement *iface, BSTR v)
@@ -459,24 +449,14 @@ static HRESULT WINAPI HTMLImgElement_put_name(IHTMLImgElement *iface, BSTR v)
static HRESULT WINAPI HTMLImgElement_get_name(IHTMLImgElement *iface, BSTR *p)
{
HTMLImgElement *This = impl_from_IHTMLImgElement(iface);
- nsAString strName;
+ nsAString name;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
- nsAString_Init(&strName, NULL);
- nsres = nsIDOMHTMLImageElement_GetName(This->nsimg, &strName);
- if(NS_SUCCEEDED(nsres)) {
- const PRUnichar *str;
-
- nsAString_GetData(&strName, &str);
- *p = *str ? SysAllocString(str) : NULL;
- }else {
- ERR("GetName failed: %08x\n", nsres);
- }
- nsAString_Finish(&strName);
-
- return NS_SUCCEEDED(nsres) ? S_OK : E_FAIL;
+ nsAString_Init(&name, NULL);
+ nsres = nsIDOMHTMLImageElement_GetName(This->nsimg, &name);
+ return return_nsstr(nsres, &name, p);
}
static HRESULT WINAPI HTMLImgElement_put_width(IHTMLImgElement *iface, LONG v)
diff --git a/dlls/mshtml/htmlinput.c b/dlls/mshtml/htmlinput.c
index 6abdd42885..a174634ab9 100644
--- a/dlls/mshtml/htmlinput.c
+++ b/dlls/mshtml/htmlinput.c
@@ -136,25 +136,13 @@ static HRESULT WINAPI HTMLInputElement_get_type(IHTMLInputElement *iface, BSTR *
{
HTMLInputElement *This = impl_from_IHTMLInputElement(iface);
nsAString type_str;
- const PRUnichar *type;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&type_str, NULL);
nsres = nsIDOMHTMLInputElement_GetType(This->nsinput, &type_str);
-
- if(NS_SUCCEEDED(nsres)) {
- nsAString_GetData(&type_str, &type);
- *p = SysAllocString(type);
- }else {
- ERR("GetType failed: %08x\n", nsres);
- }
-
- nsAString_Finish(&type_str);
-
- TRACE("type=%s\n", debugstr_w(*p));
- return S_OK;
+ return return_nsstr(nsres, &type_str, p);
}
static HRESULT WINAPI HTMLInputElement_put_value(IHTMLInputElement *iface, BSTR v)
@@ -210,25 +198,13 @@ static HRESULT WINAPI HTMLInputElement_get_name(IHTMLInputElement *iface, BSTR *
{
HTMLInputElement *This = impl_from_IHTMLInputElement(iface);
nsAString name_str;
- const PRUnichar *name;
nsresult nsres;
- HRESULT hres = S_OK;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&name_str, NULL);
-
nsres = nsIDOMHTMLInputElement_GetName(This->nsinput, &name_str);
- if(NS_SUCCEEDED(nsres)) {
- nsAString_GetData(&name_str, &name);
- *p = *name ? SysAllocString(name) : NULL;
- }else {
- ERR("GetName failed: %08x\n", nsres);
- hres = E_FAIL;
- }
-
- nsAString_Finish(&name_str);
- return hres;
+ return return_nsstr(nsres, &name_str, p);
}
static HRESULT WINAPI HTMLInputElement_put_status(IHTMLInputElement *iface, VARIANT_BOOL v)
diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c
index ed20c3ffce..47df09d1bc 100644
--- a/dlls/mshtml/htmlnode.c
+++ b/dlls/mshtml/htmlnode.c
@@ -697,30 +697,14 @@ static HRESULT WINAPI HTMLDOMNode_appendChild(IHTMLDOMNode *iface, IHTMLDOMNode
static HRESULT WINAPI HTMLDOMNode_get_nodeName(IHTMLDOMNode *iface, BSTR *p)
{
HTMLDOMNode *This = impl_from_IHTMLDOMNode(iface);
+ nsAString name;
+ nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
- *p = NULL;
-
- if(This->nsnode) {
- nsAString name_str;
- const PRUnichar *name;
- nsresult nsres;
-
- nsAString_Init(&name_str, NULL);
- nsres = nsIDOMNode_GetNodeName(This->nsnode, &name_str);
-
- if(NS_SUCCEEDED(nsres)) {
- nsAString_GetData(&name_str, &name);
- *p = SysAllocString(name);
- }else {
- ERR("GetNodeName failed: %08x\n", nsres);
- }
-
- nsAString_Finish(&name_str);
- }
-
- return S_OK;
+ nsAString_Init(&name, NULL);
+ nsres = nsIDOMNode_GetNodeName(This->nsnode, &name);
+ return return_nsstr(nsres, &name, p);
}
static HRESULT WINAPI HTMLDOMNode_put_nodeValue(IHTMLDOMNode *iface, VARIANT v)
diff --git a/dlls/mshtml/htmloption.c b/dlls/mshtml/htmloption.c
index 5a250d7b6c..f702920df8 100644
--- a/dlls/mshtml/htmloption.c
+++ b/dlls/mshtml/htmloption.c
@@ -153,23 +153,13 @@ static HRESULT WINAPI HTMLOptionElement_get_value(IHTMLOptionElement *iface, BST
{
HTMLOptionElement *This = impl_from_IHTMLOptionElement(iface);
nsAString value_str;
- const PRUnichar *value;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&value_str, NULL);
nsres = nsIDOMHTMLOptionElement_GetValue(This->nsoption, &value_str);
- if(NS_SUCCEEDED(nsres)) {
- nsAString_GetData(&value_str, &value);
- *p = SysAllocString(value);
- }else {
- ERR("GetValue failed: %08x\n", nsres);
- *p = NULL;
- }
- nsAString_Finish(&value_str);
-
- return S_OK;
+ return return_nsstr(nsres, &value_str, p);
}
static HRESULT WINAPI HTMLOptionElement_put_defaultSelected(IHTMLOptionElement *iface, VARIANT_BOOL v)
@@ -253,23 +243,13 @@ static HRESULT WINAPI HTMLOptionElement_get_text(IHTMLOptionElement *iface, BSTR
{
HTMLOptionElement *This = impl_from_IHTMLOptionElement(iface);
nsAString text_str;
- const PRUnichar *text;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&text_str, NULL);
nsres = nsIDOMHTMLOptionElement_GetText(This->nsoption, &text_str);
- if(NS_SUCCEEDED(nsres)) {
- nsAString_GetData(&text_str, &text);
- *p = SysAllocString(text);
- }else {
- ERR("GetText failed: %08x\n", nsres);
- *p = NULL;
- }
- nsAString_Finish(&text_str);
-
- return S_OK;
+ return return_nsstr(nsres, &text_str, p);
}
static HRESULT WINAPI HTMLOptionElement_get_form(IHTMLOptionElement *iface, IHTMLFormElement **p)
diff --git a/dlls/mshtml/htmlscript.c b/dlls/mshtml/htmlscript.c
index cb5cbedc44..376db7b39b 100644
--- a/dlls/mshtml/htmlscript.c
+++ b/dlls/mshtml/htmlscript.c
@@ -240,7 +240,6 @@ static HRESULT WINAPI HTMLScriptElement_put_type(IHTMLScriptElement *iface, BSTR
static HRESULT WINAPI HTMLScriptElement_get_type(IHTMLScriptElement *iface, BSTR *p)
{
HTMLScriptElement *This = impl_from_IHTMLScriptElement(iface);
- const PRUnichar *nstype;
nsAString nstype_str;
nsresult nsres;
@@ -248,14 +247,7 @@ static HRESULT WINAPI HTMLScriptElement_get_type(IHTMLScriptElement *iface, BSTR
nsAString_Init(&nstype_str, NULL);
nsres = nsIDOMHTMLScriptElement_GetType(This->nsscript, &nstype_str);
- if(NS_FAILED(nsres))
- ERR("GetType failed: %08x\n", nsres);
-
- nsAString_GetData(&nstype_str, &nstype);
- *p = *nstype ? SysAllocString(nstype) : NULL;
- nsAString_Finish(&nstype_str);
-
- return S_OK;
+ return return_nsstr(nsres, &nstype_str, p);
}
static const IHTMLScriptElementVtbl HTMLScriptElementVtbl = {
diff --git a/dlls/mshtml/htmlselect.c b/dlls/mshtml/htmlselect.c
index b2cbea7e7d..a6d53f28e8 100644
--- a/dlls/mshtml/htmlselect.c
+++ b/dlls/mshtml/htmlselect.c
@@ -266,26 +266,14 @@ static HRESULT WINAPI HTMLSelectElement_get_selectedIndex(IHTMLSelectElement *if
static HRESULT WINAPI HTMLSelectElement_get_type(IHTMLSelectElement *iface, BSTR *p)
{
HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface);
- const PRUnichar *type;
nsAString type_str;
nsresult nsres;
- HRESULT hres = S_OK;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&type_str, NULL);
nsres = nsIDOMHTMLSelectElement_GetType(This->nsselect, &type_str);
- if(NS_SUCCEEDED(nsres)) {
- nsAString_GetData(&type_str, &type);
- *p = *type ? SysAllocString(type) : NULL;
- }else {
- ERR("GetType failed: %08x\n", nsres);
- hres = E_FAIL;
- }
-
- nsAString_Finish(&type_str);
-
- return hres;
+ return return_nsstr(nsres, &type_str, p);
}
static HRESULT WINAPI HTMLSelectElement_put_value(IHTMLSelectElement *iface, BSTR v)
@@ -309,25 +297,13 @@ static HRESULT WINAPI HTMLSelectElement_get_value(IHTMLSelectElement *iface, BST
{
HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface);
nsAString value_str;
- const PRUnichar *value = NULL;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&value_str, NULL);
-
nsres = nsIDOMHTMLSelectElement_GetValue(This->nsselect, &value_str);
- if(NS_SUCCEEDED(nsres)) {
- nsAString_GetData(&value_str, &value);
- *p = *value ? SysAllocString(value) : NULL;
- }else {
- ERR("GetValue failed: %08x\n", nsres);
- }
-
- nsAString_Finish(&value_str);
-
- TRACE("value=%s\n", debugstr_w(*p));
- return S_OK;
+ return return_nsstr(nsres, &value_str, p);
}
static HRESULT WINAPI HTMLSelectElement_put_disabled(IHTMLSelectElement *iface, VARIANT_BOOL v)
diff --git a/dlls/mshtml/htmltextarea.c b/dlls/mshtml/htmltextarea.c
index f16207ccc4..2a6fe5e08a 100644
--- a/dlls/mshtml/htmltextarea.c
+++ b/dlls/mshtml/htmltextarea.c
@@ -135,25 +135,13 @@ static HRESULT WINAPI HTMLTextAreaElement_get_value(IHTMLTextAreaElement *iface,
{
HTMLTextAreaElement *This = impl_from_IHTMLTextAreaElement(iface);
nsAString value_str;
- const PRUnichar *value;
nsresult nsres;
- HRESULT hres = S_OK;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&value_str, NULL);
-
nsres = nsIDOMHTMLTextAreaElement_GetValue(This->nstextarea, &value_str);
- if(NS_SUCCEEDED(nsres)) {
- nsAString_GetData(&value_str, &value);
- *p = *value ? SysAllocString(value) : NULL;
- }else {
- ERR("GetValue failed: %08x\n", nsres);
- hres = E_FAIL;
- }
-
- nsAString_Finish(&value_str);
- return hres;
+ return return_nsstr(nsres, &value_str, p);
}
static HRESULT WINAPI HTMLTextAreaElement_put_name(IHTMLTextAreaElement *iface, BSTR v)
@@ -167,25 +155,13 @@ static HRESULT WINAPI HTMLTextAreaElement_get_name(IHTMLTextAreaElement *iface,
{
HTMLTextAreaElement *This = impl_from_IHTMLTextAreaElement(iface);
nsAString name_str;
- const PRUnichar *name;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&name_str, NULL);
-
nsres = nsIDOMHTMLTextAreaElement_GetName(This->nstextarea, &name_str);
- if(NS_SUCCEEDED(nsres)) {
- nsAString_GetData(&name_str, &name);
- *p = SysAllocString(name);
- }else {
- ERR("GetName failed: %08x\n", nsres);
- }
-
- nsAString_Finish(&name_str);
-
- TRACE("%s\n", debugstr_w(*p));
- return S_OK;
+ return return_nsstr(nsres, &name_str, p);
}
static HRESULT WINAPI HTMLTextAreaElement_put_status(IHTMLTextAreaElement *iface, VARIANT v)
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c
index 5f68e6dd23..9069e6d8ca 100644
--- a/dlls/mshtml/htmlwindow.c
+++ b/dlls/mshtml/htmlwindow.c
@@ -750,30 +750,12 @@ static HRESULT WINAPI HTMLWindow2_get_name(IHTMLWindow2 *iface, BSTR *p)
HTMLWindow *This = impl_from_IHTMLWindow2(iface);
nsAString name_str;
nsresult nsres;
- HRESULT hres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&name_str, NULL);
nsres = nsIDOMWindow_GetName(This->nswindow, &name_str);
- if(NS_SUCCEEDED(nsres)) {
- const PRUnichar *name;
-
- nsAString_GetData(&name_str, &name);
- if(*name) {
- *p = SysAllocString(name);
- hres = *p ? S_OK : E_OUTOFMEMORY;
- }else {
- *p = NULL;
- hres = S_OK;
- }
- }else {
- ERR("GetName failed: %08x\n", nsres);
- hres = E_FAIL;
- }
- nsAString_Finish(&name_str);
-
- return hres;
+ return return_nsstr(nsres, &name_str, p);
}
static HRESULT WINAPI HTMLWindow2_get_parent(IHTMLWindow2 *iface, IHTMLWindow2 **p)