Fix off-by-one in buffer cloning that can cause double free().

Fixes issue #284.
diff --git a/THANKS b/THANKS
index 8385d32..2a6c58e 100644
--- a/THANKS
+++ b/THANKS
@@ -102,6 +102,7 @@
 Rikard Falkeborn <rikard.falkeborn@gmail.com>
 Robert Norris <rw_norris@hotmail.com>
 Roberto Tirabassi <rtirabassi@3di.it>
+robhz786 <robhz786@gmail.com>
 Roland Ortloff <Ortloff.R@gmx.de>
 Rosen Penev <rosenp@gmail.com>
 Ryan Burns <rtburns@protonmail.com>
diff --git a/lib/zip_source_buffer.c b/lib/zip_source_buffer.c
index e0ab72b..c0d6c28 100644
--- a/lib/zip_source_buffer.c
+++ b/lib/zip_source_buffer.c
@@ -361,13 +361,13 @@
     clone->fragment_offsets[clone->nfragments] = offset;
     clone->size = offset;
 
-    clone->first_owned_fragment = ZIP_MIN(buffer->first_owned_fragment, clone->nfragments - 1);
+    clone->first_owned_fragment = ZIP_MIN(buffer->first_owned_fragment, clone->nfragments);
 
     buffer->shared_buffer = clone;
     clone->shared_buffer = buffer;
     buffer->shared_fragments = clone->nfragments;
     clone->shared_fragments = fragment + 1;
-
+    
     return clone;
 }