@@ -312,6 +312,8 @@ pub fn head_row_start(tokenizer: &mut Tokenizer) -> State {
312312 Some ( b'|' ) => State :: Retry ( StateName :: GfmTableHeadRowBreak ) ,
313313 _ => {
314314 tokenizer. tokenize_state . seen = true ;
315+ // Count the first character, that isn’t a pipe, double.
316+ tokenizer. tokenize_state . size_b += 1 ;
315317 State :: Retry ( StateName :: GfmTableHeadRowBreak )
316318 }
317319 }
@@ -332,22 +334,34 @@ pub fn head_row_break(tokenizer: &mut Tokenizer) -> State {
332334 None => {
333335 tokenizer. tokenize_state . seen = false ;
334336 tokenizer. tokenize_state . size = 0 ;
337+ tokenizer. tokenize_state . size_b = 0 ;
335338 State :: Nok
336339 }
337340 Some ( b'\n' ) => {
338- // Feel free to interrupt:
339- tokenizer. interrupt = true ;
340- tokenizer. exit ( Name :: GfmTableRow ) ;
341- tokenizer. enter ( Name :: LineEnding ) ;
342- tokenizer. consume ( ) ;
343- tokenizer. exit ( Name :: LineEnding ) ;
344- State :: Next ( StateName :: GfmTableHeadDelimiterStart )
341+ // If anything other than one pipe (ignoring whitespace) was used, it’s fine.
342+ if tokenizer. tokenize_state . size_b > 1 {
343+ tokenizer. tokenize_state . size_b = 0 ;
344+ // Feel free to interrupt:
345+ tokenizer. interrupt = true ;
346+ tokenizer. exit ( Name :: GfmTableRow ) ;
347+ tokenizer. enter ( Name :: LineEnding ) ;
348+ tokenizer. consume ( ) ;
349+ tokenizer. exit ( Name :: LineEnding ) ;
350+ State :: Next ( StateName :: GfmTableHeadDelimiterStart )
351+ } else {
352+ tokenizer. tokenize_state . seen = false ;
353+ tokenizer. tokenize_state . size = 0 ;
354+ tokenizer. tokenize_state . size_b = 0 ;
355+ State :: Nok
356+ }
345357 }
346358 Some ( b'\t' | b' ' ) => {
347359 tokenizer. attempt ( State :: Next ( StateName :: GfmTableHeadRowBreak ) , State :: Nok ) ;
348360 State :: Retry ( space_or_tab ( tokenizer) )
349361 }
350362 _ => {
363+ tokenizer. tokenize_state . size_b += 1 ;
364+
351365 // Whether a delimiter was seen.
352366 if tokenizer. tokenize_state . seen {
353367 tokenizer. tokenize_state . seen = false ;
0 commit comments