diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2402d735875..a2d36017b09 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-01-01  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* record-full.c (record_full_base_target::close): Rewrite
+	record_full_core_buf_list free logic.
+
 2019-01-01  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
 	* break-catch-syscall.c (print_one_catch_syscall): xfree
diff --git a/gdb/record-full.c b/gdb/record-full.c
index 2b918eaabff..8738512f288 100644
--- a/gdb/record-full.c
+++ b/gdb/record-full.c
@@ -1014,15 +1014,11 @@ record_full_base_target::close ()
     }
 
   /* Release record_full_core_buf_list.  */
-  if (record_full_core_buf_list)
+  while (record_full_core_buf_list)
     {
-      for (entry = record_full_core_buf_list->prev; entry;
-	   entry = entry->prev)
-	{
-	  xfree (record_full_core_buf_list);
-	  record_full_core_buf_list = entry;
-	}
-      record_full_core_buf_list = NULL;
+      entry = record_full_core_buf_list;
+      record_full_core_buf_list = record_full_core_buf_list->prev;
+      xfree (entry);
     }
 
   if (record_full_async_inferior_event_token)