diff --git a/dlls/webservices/reader.c b/dlls/webservices/reader.c
index 08f2287604c..515ed1ec6a9 100644
--- a/dlls/webservices/reader.c
+++ b/dlls/webservices/reader.c
@@ -1101,16 +1101,6 @@ static HRESULT read_endelement( struct reader *reader )
     WS_XML_STRING *prefix, *localname;
     HRESULT hr;
 
-    switch (reader->state)
-    {
-    case READER_STATE_TEXT:
-    case READER_STATE_STARTELEMENT:
-    case READER_STATE_STARTENDELEMENT:
-        break;
-    default:
-        return WS_E_INVALID_FORMAT;
-    }
-
     if (read_cmp( reader, "</", 2 )) return WS_E_INVALID_FORMAT;
     read_skip( reader, 2 );
 
diff --git a/dlls/webservices/tests/reader.c b/dlls/webservices/tests/reader.c
index d2f230846ce..958d08c816d 100644
--- a/dlls/webservices/tests/reader.c
+++ b/dlls/webservices/tests/reader.c
@@ -885,7 +885,7 @@ static void test_WsReadStartElement(void)
     if (node) ok( node->nodeType == WS_XML_NODE_TYPE_END_ELEMENT, "got %u\n", node->nodeType );
 
     hr = WsReadEndElement( reader, NULL );
-    todo_wine ok( hr == S_OK, "got %08x\n", hr );
+    ok( hr == S_OK, "got %08x\n", hr );
 
     hr = WsGetReaderNode( reader, &node, NULL );
     ok( hr == S_OK, "got %08x\n", hr );