diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c
index 7f974f0e990..b73476bc38c 100644
--- a/dlls/mshtml/persist.c
+++ b/dlls/mshtml/persist.c
@@ -334,6 +334,7 @@ static HRESULT get_doc_string(HTMLDocumentNode *This, char **str)
LPCWSTR strw;
nsAString nsstr;
nsresult nsres;
+ HRESULT hres;
if(!This->nsdoc) {
WARN("NULL nsdoc\n");
@@ -347,8 +348,12 @@ static HRESULT get_doc_string(HTMLDocumentNode *This, char **str)
}
nsAString_Init(&nsstr, NULL);
- nsnode_to_nsstring(nsnode, &nsstr);
+ hres = nsnode_to_nsstring(nsnode, &nsstr);
nsIDOMNode_Release(nsnode);
+ if(FAILED(hres)) {
+ nsAString_Finish(&nsstr);
+ return hres;
+ }
nsAString_GetData(&nsstr, &strw);
TRACE("%s\n", debugstr_w(strw));
@@ -357,6 +362,8 @@ static HRESULT get_doc_string(HTMLDocumentNode *This, char **str)
nsAString_Finish(&nsstr);
+ if(!*str)
+ return E_OUTOFMEMORY;
return S_OK;
}