From 24231623f3e2e44d3035ced7e971f3491f705e46 Mon Sep 17 00:00:00 2001
From: Freiric Barral <freiric@gmail.com>
Date: Wed, 8 Oct 2014 23:25:01 +0200
Subject: [PATCH] fix inDirectory to reset to the original directory in case an
 exception occurs

---
 src/Text/Pandoc/Shared.hs | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs
index 6e1f84335..9aa70e6f2 100644
--- a/src/Text/Pandoc/Shared.hs
+++ b/src/Text/Pandoc/Shared.hs
@@ -735,12 +735,10 @@ renderTags' = renderTagsOptions
 
 -- | Perform an IO action in a directory, returning to starting directory.
 inDirectory :: FilePath -> IO a -> IO a
-inDirectory path action = do
-  oldDir <- getCurrentDirectory
-  setCurrentDirectory path
-  result <- action
-  setCurrentDirectory oldDir
-  return result
+inDirectory path action = E.bracket
+                             getCurrentDirectory
+                             setCurrentDirectory
+                             (const $ setCurrentDirectory path >> action)
 
 readDefaultDataFile :: FilePath -> IO BS.ByteString
 readDefaultDataFile fname =