2008-06-25  Michael Snyder  <msnyder@specifix.com>

	* gdbfreeplay-back.c (frame_find_request): Rewrite loop to
	avoid fencepost error on last frame.
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 70b3306..259a081 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,8 @@
+2008-06-25  Michael Snyder  <msnyder@specifix.com>
+
+	* gdbfreeplay-back.c (frame_find_request): Rewrite loop to 
+	avoid fencepost error on last frame.
+
 2008-06-23  Michael Snyder  <msnyder@specifix.com>
 
 	* gdbfreeplay.h: Replace all address values with unsigned long long.
diff --git a/gdb/gdbserver/gdbfreeplay-back.c b/gdb/gdbserver/gdbfreeplay-back.c
index bcfe49b..7d7cf41 100644
--- a/gdb/gdbserver/gdbfreeplay-back.c
+++ b/gdb/gdbserver/gdbfreeplay-back.c
@@ -326,11 +326,12 @@
 	curpos = stopframe[cur_frame].eventpos;
       fseek (logfile, curpos, SEEK_SET);
       /* Now search for a matching request.  */
-      while (curpos < stopframe[cur_frame + 1].eventpos)
+      while ((line = fgets (inbuf, sizeof (inbuf), logfile)) != NULL)
 	{
-	  line = fgets (inbuf, sizeof (inbuf), logfile);
-	  /* End of input?  */
-	  if (line == NULL)
+	  /* End of current frame?
+	     If we're the last frame, just read till the end of file.  */
+	  if (cur_frame < last_cached_frame &&
+	      curpos >= stopframe[cur_frame + 1].eventpos)
 	    break;
 	  curpos = ftell (logfile);
 	  if (strstr (line, request) != NULL)