diff options
Diffstat (limited to 'src/Erebos/Storage/Graph.hs')
| -rw-r--r-- | src/Erebos/Storage/Graph.hs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/Erebos/Storage/Graph.hs b/src/Erebos/Storage/Graph.hs index 67daa3b..815e0f7 100644 --- a/src/Erebos/Storage/Graph.hs +++ b/src/Erebos/Storage/Graph.hs @@ -160,7 +160,7 @@ commonAncestors oxs oys = sort $ gom oxs' oys' takeCommon xs [] = ( [], ( xs, [] )) -storedRoots :: Storable a => Stored a -> [Stored a] +storedRoots :: Storable a => Stored a -> [ Stored a ] storedRoots x = do let st = refStorage $ storedRef x unsafePerformIO $ withMVar (stRefRoots st) $ \ht -> do @@ -168,8 +168,8 @@ storedRoots x = do Just roots -> return roots Nothing -> do roots <- case previous y of - [] -> return [refDigest $ storedRef y] - ps -> map (refDigest . storedRef) . filterAncestors . map (wrappedLoad @Object . Ref st) . concat <$> mapM doLookup ps + [] -> return [ refDigest $ storedRef y ] + ps -> foldl' mergeUniq [] <$> mapM doLookup ps HT.insert ht (refDigest $ storedRef y) roots return roots map (wrappedLoad . Ref st) <$> doLookup x |