@@ -171,12 +171,10 @@ parseMarkdown = do
171171 -- need to parse raw HTML, since markdown allows it
172172 (title, author, date) <- option ([],[],"") titleBlock
173173 oldState <- getState
174− oldInput <- getInput
175174 -- go through once just to get list of reference keys
176− manyTill (referenceKey <|> (do{anyLine; return Null})) eof
177− newState <- getState
178− let keysUsed = stateKeysUsed newState
179− setInput oldInput
175+ keysUsed <- lookAhead $ (do {manyTill (referenceKey <|> (do{anyLine; return Null})) eof;
176+ newState <- getState;
177+ return $ stateKeysUsed newState})
180178 setState (oldState { stateKeysUsed = keysUsed })
181179 blocks <- parseBlocks -- go through again, for real
182180 let blocks' = filter (/= Null) blocks