@@ -254,12 +254,15 @@ yamlMetaBlock = try $ do
254254 then return ()
255255 else do
256256 v' <- yamlToMeta v
257− updateState $ \st ->
258− let smeta = stateMeta' st
259− in st{ stateMeta' =
260− (do v'' <- v'
261− m <- smeta
262− return $ B.setMeta (T.unpack k) v'' m)}
257+ let k' = T.unpack k
258+ updateState $ \st -> st{ stateMeta' =
259+ (do m <- stateMeta' st
260+ -- if there's already a value, leave it unchanged
261+ case lookupMeta k' m of
262+ Just _ -> return m
263+ Nothing -> do
264+ v'' <- v'
265+ return $ B.setMeta (T.unpack k) v'' m)}
263266 ) alist
264267 Right Yaml.Null -> return ()
265268 Right _ -> do