diff --git a/lib/modules/Stdio.pmod b/lib/modules/Stdio.pmod
index 7efb3f95911cf25938ac7c1fb57ca2dab7938200..5499910414920d028d6656ae9b289a470aa39873 100644
--- a/lib/modules/Stdio.pmod
+++ b/lib/modules/Stdio.pmod
@@ -42,10 +42,10 @@ class FILE {
     /* Public functions. */
     string gets()
     {
-      int p,tmp=bpos;
-      while((p=search(b, "\n", tmp)) == -1)
+      int p,tmp=0;
+      while((p=search(b, "\n", bpos+tmp)) == -1)
       {
-	tmp=strlen(b);
+	tmp=strlen(b)-bpos;
 	if(!get_data()) return 0;
       }
       return extract(p-bpos, 1);