diff --git a/dlls/mshtml/htmlframe.c b/dlls/mshtml/htmlframe.c
index c52836b951c..0c07f0c6775 100644
--- a/dlls/mshtml/htmlframe.c
+++ b/dlls/mshtml/htmlframe.c
@@ -1240,15 +1240,14 @@ static HRESULT WINAPI HTMLIFrameElement2_put_height(IHTMLIFrameElement2 *iface,
HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface);
nsAString nsstr;
nsresult nsres;
+ HRESULT hres;
TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
- if(V_VT(&v) != VT_BSTR) {
- FIXME("Unsupported %s\n", debugstr_variant(&v));
- return E_NOTIMPL;
- }
+ hres = variant_to_nsstr(&v, FALSE, &nsstr);
+ if(FAILED(hres))
+ return hres;
- nsAString_InitDepend(&nsstr, V_BSTR(&v));
nsres = nsIDOMHTMLIFrameElement_SetHeight(This->framebase.nsiframe, &nsstr);
nsAString_Finish(&nsstr);
if(NS_FAILED(nsres)) {
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index ff33ff76efe..5ef27ede89c 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -8205,12 +8205,13 @@ static void _set_iframe_width(unsigned line, IHTMLElement *elem, const WCHAR *va
static void test_iframe_elem(IHTMLElement *elem)
{
IHTMLDocument2 *content_doc, *owner_doc;
+ IHTMLIFrameElement2 *iframe2;
IHTMLIFrameElement3 *iframe3;
IHTMLElementCollection *col;
IHTMLWindow2 *content_window;
IHTMLElement *body;
IDispatch *disp;
- VARIANT errv;
+ VARIANT errv, v;
BSTR str;
HRESULT hres;
@@ -8244,11 +8245,19 @@ static void test_iframe_elem(IHTMLElement *elem)
win_skip("IHTMLIFrameElement3 not supported\n");
}
+ iframe2 = get_iframe2_iface((IUnknown*)elem);
+
test_iframe_height(elem, NULL);
set_iframe_height(elem, L"100px");
set_iframe_height(elem, L"50%");
test_iframe_height(elem, L"50%");
+ V_VT(&v) = VT_I4;
+ V_I4(&v) = 100;
+ hres = IHTMLIFrameElement2_put_height(iframe2, v);
+ ok(hres == S_OK, "put_height failed: %08x\n", hres);
+ test_iframe_height(elem, L"100");
+
test_iframe_width(elem, NULL);
set_iframe_width(elem, L"150px");
set_iframe_width(elem, L"70%");
@@ -8279,6 +8288,7 @@ static void test_iframe_elem(IHTMLElement *elem)
test_elem_attr(body, L"i4val", L"4");
test_elem_attr(body, L"r8val", L"3.14");
IHTMLElement_Release(body);
+ IHTMLIFrameElement2_Release(iframe2);
hres = IHTMLDocument2_close(content_doc);
ok(hres == S_OK, "close failed: %08x\n", hres);