diff --git a/inc/changelog.php b/inc/changelog.php
index fea39f9f7067e446821484e50336099c55c019ac..3162df01ad19a123a1d641ac63fbb84ed3016846 100644
--- a/inc/changelog.php
+++ b/inc/changelog.php
@@ -454,8 +454,9 @@ function getRevisions($id, $first, $num, $chunk_size=8192, $media=false) {
     }
     $num = max($num, 0);
     $chunk_size = max($chunk_size, 0);
-    if ($first<0) { $first = 0; }
-    else if (!$media && @file_exists(wikiFN($id)) || $media && @file_exists(mediaFN($id))) {
+    if ($first<0) {
+        $first = 0;
+    } else if (!$media && @file_exists(wikiFN($id)) || $media && @file_exists(mediaFN($id))) {
         // skip current revision if the page exists
         $first = max($first+1, 0);
     }
@@ -476,13 +477,21 @@ function getRevisions($id, $first, $num, $chunk_size=8192, $media=false) {
         $finger = max($tail-$chunk_size, 0);
         while ($count<$num+$first) {
             fseek($fp, $finger);
+            $nl = $finger;
             if ($finger>0) {
                 fgets($fp); // slip the finger forward to a new line
-                $finger = ftell($fp);
+                $nl = ftell($fp);
+            }
+
+            // was the chunk big enough? if not, take another bite
+            if($nl > 0 && $tail <= $nl){
+                $finger = max($finger-$chunk_size, 0);
+                continue;
+            }else{
+                $finger = $nl;
             }
 
             // read chunk
-            if ($tail<=$finger) { break; }
             $chunk = '';
             $read_size = max($tail-$finger, 0); // found chunk size
             $got = 0;