@@ -1262,16 +1262,18 @@ def startTagOther(self, token):
12621262self .tree .insertElement (token )
12631263
12641264def endTagP (self ,token ):
1265- if self . tree . elementInScope ( "p" ):
1266- self .tree .generateImpliedEndTags ("p" )
1267- if self . tree . openElements [ - 1 ]. name != "p" :
1265+
1266+ if not self .tree .elementInScope ("p" ):
1267+ self . startTagCloseP ( impliedTagToken ( "p" , "StartTag" ))
12681268self .parser .parseError ("unexpected-end-tag" , {"name" :"p" })
1269- if self .tree .elementInScope ("p" ):
1270- while self .tree .elementInScope ("p" ):
1271- self .tree .openElements .pop ()
1269+ self .endTagP (impliedTagToken ("p" ,"EndTag" ))
12721270else :
1273- self .startTagCloseP (impliedTagToken ("p" ,"StartTag" ))
1274- self .endTagP (impliedTagToken ("p" ))
1271+ self .tree .generateImpliedEndTags ("p" )
1272+ if self .tree .openElements [- 1 ].name != "p" :
1273+ self .parser .parseError ("unexpected-end-tag" , {"name" :"p" })
1274+ node = self .tree .openElements .pop ()
1275+ while node .name != "p" :
1276+ node = self .tree .openElements .pop ()
12751277
12761278def endTagBody (self ,token ):
12771279# XXX Need to take open <p> tags into account here. We shouldn't imply