diff --git a/mkzftree.c b/mkzftree.c
index 14579f0..47d5489 100644
--- a/mkzftree.c
+++ b/mkzftree.c
@@ -284,26 +284,31 @@
 
     csize = cend-cstart;
 
-    if ( csize > block_size2 ) {
-      errno = EINVAL;
-      goto free_ptr_bail;
+    if ( csize == 0 ) {
+      memset(outbuf, 0, block_size);
+      bytes = block_size;
+    } else {
+      if ( csize > block_size2 ) {
+	errno = EINVAL;
+	goto free_ptr_bail;
+      }
+      
+      if ( fseek(input, cstart, SEEK_SET) == -1 )
+	goto free_ptr_bail;
+      
+      errno = 0;
+      if ( (bytes = fread(inbuf, 1, csize, input)) != csize ) {
+	if ( errno == 0 ) errno = EINVAL;
+	goto free_ptr_bail;
+      }
+      
+      bytes = block_size;		/* Max output buffer size */
+      if ( (zerr = uncompress(outbuf, &bytes, inbuf, csize)) != Z_OK ) {
+	errno = (zerr = Z_MEM_ERROR) ? ENOMEM : EINVAL;
+	goto free_ptr_bail;
+      }
     }
-
-    if ( fseek(input, cstart, SEEK_SET) == -1 )
-      goto free_ptr_bail;
-    
-    errno = 0;
-    if ( (bytes = fread(inbuf, 1, csize, input)) != csize ) {
-      if ( errno == 0 ) errno = EINVAL;
-      goto free_ptr_bail;
-    }
-    
-    bytes = block_size;		/* Max output buffer size */
-    if ( (zerr = uncompress(outbuf, &bytes, inbuf, csize)) != Z_OK ) {
-      errno = (zerr = Z_MEM_ERROR) ? ENOMEM : EINVAL;
-      goto free_ptr_bail;
-    }
-    
+      
     if ( ((fullsize > block_size) && (bytes != block_size))
 	 || ((fullsize <= block_size) && (bytes < fullsize)) ) {
       errno = EINVAL;
