diff --git a/Data/Array/Dynamic/F.hs b/Data/Array/Dynamic/F.hs
--- a/Data/Array/Dynamic/F.hs
+++ b/Data/Array/Dynamic/F.hs
@@ -143,11 +143,14 @@
 freeze :: Flat a => Array a -> IO (FI.Array a)
 freeze (Array arr) = do
   sizeRef <- RUU.readFst arr
-  elems   <- RUU.readSnd arr
   size    <- RF.read sizeRef
-  tgt     <- FM.new size
-  FM.copySlice elems 0 tgt 0 size
-  FM.unsafeFreeze tgt
+  if size == 0 then
+    pure FI.empty
+  else do
+    elems <- RUU.readSnd arr
+    tgt <- FM.new size
+    FM.copySlice elems 0 tgt 0 size
+    FM.unsafeFreeze tgt
 
 clear :: Flat a => Array a -> IO ()
 clear (Array r) = do
diff --git a/Data/Array/Dynamic/L.hs b/Data/Array/Dynamic/L.hs
--- a/Data/Array/Dynamic/L.hs
+++ b/Data/Array/Dynamic/L.hs
@@ -65,11 +65,14 @@
 freeze :: Array a -> IO (LI.Array a)
 freeze (Array arr) = do
   sizeRef <- RUU.readFst arr
-  elems   <- RUU.readSnd arr
   size    <- RF.read sizeRef
-  tgt     <- LM.new size undefElem
-  LM.copySlice elems 0 tgt 0 size
-  LM.unsafeFreeze tgt
+  if size == 0 then
+    pure LI.empty
+  else do
+    elems <- RUU.readSnd arr
+    tgt <- LM.new size undefElem
+    LM.copySlice elems 0 tgt 0 size
+    LM.unsafeFreeze tgt
 
 empty :: forall a. IO (Array a)
 empty = do
diff --git a/Data/Array/Dynamic/U.hs b/Data/Array/Dynamic/U.hs
--- a/Data/Array/Dynamic/U.hs
+++ b/Data/Array/Dynamic/U.hs
@@ -140,11 +140,14 @@
 freeze :: Unlifted a => Array a -> IO (UI.Array a)
 freeze (Array arr) = do
   sizeRef <- RUU.readFst arr
-  elems   <- RUU.readSnd arr
   size    <- RF.read sizeRef
-  tgt     <- UM.new size defaultElem
-  UM.copySlice elems 0 tgt 0 size
-  UM.unsafeFreeze tgt
+  if size == 0 then
+    pure UI.empty
+  else do
+    elems <- RUU.readSnd arr
+    tgt <- UM.new size defaultElem
+    UM.copySlice elems 0 tgt 0 size
+    UM.unsafeFreeze tgt
 
 clear :: Unlifted a => Array a -> IO ()
 clear (Array r) = do
diff --git a/dynamic-array.cabal b/dynamic-array.cabal
--- a/dynamic-array.cabal
+++ b/dynamic-array.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.38.1.
+-- This file has been generated from package.yaml by hpack version 0.39.1.
 --
 -- see: https://github.com/sol/hpack
 
 name:           dynamic-array
-version:        0.1.3
+version:        0.1.3.1
 synopsis:       Minimum-overhead mutable dynamic arrays
 category:       data
 author:         András Kovács
