diff --git a/rtl/objpas/fgl.pp b/rtl/objpas/fgl.pp
index 5ff1e5d03b..8407087cf4 100644
--- a/rtl/objpas/fgl.pp
+++ b/rtl/objpas/fgl.pp
@@ -398,9 +398,13 @@ begin
 end;
 
 procedure TFPSList.Put(Index: Integer; Item: Pointer);
+var p : Pointer;
 begin
   if (Index < 0) or (Index >= FCount) then
     RaiseIndexError(Index);
+  p:=InternalItems[Index];
+  if assigned(p) then
+    DeRef(p);	
   InternalItems[Index] := Item;
 end;