Browse Source

Revert commit 663ee7bc2007a22c48f97927afd4086cc8e56490 as it's simply not allowed to set an object instance value twice no matter if it's the same object instance or not.

Sven/Sarah Barth 2 years ago
parent
commit
43f4904d74

+ 0 - 14
packages/rtl-generics/src/inc/generics.dictionaries.inc

@@ -2233,20 +2233,6 @@ begin
   FOwnerships := AOwnerships;
 end;
 
-procedure TObjectOpenAddressingLP<OPEN_ADDRESSING_CONSTRAINTS>.SetValue(var AValue: TValue; constref ANewValue: TValue);
-var
-  LOldValue: TValue;
-begin
-  if TObject((@AValue)^) <> TObject((@ANewValue)^) then
-  begin
-    LOldValue := AValue;
-    AValue := ANewValue;
-
-    ValueNotify(LOldValue, cnRemoved);
-    ValueNotify(ANewValue, cnAdded);
-  end;
-end;
-
 procedure TObjectOpenAddressingLP<OPEN_ADDRESSING_CONSTRAINTS>.KeyNotify(
   constref AKey: TKey; ACollectionNotification: TCollectionNotification);
 begin

+ 1 - 2
packages/rtl-generics/src/inc/generics.dictionariesh.inc

@@ -98,7 +98,7 @@ type
     procedure KeyNotify(constref AKey: TKey; ACollectionNotification: TCollectionNotification); virtual;
     procedure ValueNotify(constref AValue: TValue; ACollectionNotification: TCollectionNotification); virtual;
     procedure PairNotify(constref APair: TDictionaryPair; ACollectionNotification: TCollectionNotification); inline;
-    procedure SetValue(var AValue: TValue; constref ANewValue: TValue); dynamic;
+    procedure SetValue(var AValue: TValue; constref ANewValue: TValue);
   public
     property OnKeyNotify: TCollectionNotifyEvent<TKey> read FOnKeyNotify write FOnKeyNotify;
     property OnValueNotify: TCollectionNotifyEvent<TValue> read FOnValueNotify write FOnValueNotify;
@@ -597,7 +597,6 @@ type
   private
     FOwnerships: TDictionaryOwnerships;
   protected
-    procedure SetValue(var AValue: TValue; constref ANewValue: TValue); override;
     procedure KeyNotify(constref AKey: TKey; ACollectionNotification: TCollectionNotification); override;
     procedure ValueNotify(constref AValue: TValue; ACollectionNotification: TCollectionNotification); override;
   public