Forráskód Böngészése

Failure caused by 93fc1a2807a due to CustomCreateFileList adding a pointer to internal structure to returned file list

Source commit: 38ac7593ab543ba9ec3297f71913ab794b737ed2
Martin Prikryl 7 éve
szülő
commit
62c3fd8d6d

+ 10 - 0
source/components/UnixDirView.cpp

@@ -950,6 +950,16 @@ TDateTime __fastcall TUnixDirView::ItemFileTime(TListItem * Item,
 #endif
 }
 //---------------------------------------------------------------------------
+TObject * __fastcall TUnixDirView::ItemData(TListItem * Item)
+{
+#ifndef DESIGN_ONLY
+  return ITEMFILE;
+#else
+  DebugUsedParam(Item);
+  return NULL;
+#endif
+}
+//---------------------------------------------------------------------------
 void __fastcall TUnixDirView::SetShowInaccesibleDirectories(bool value)
 {
   if (FShowInaccesibleDirectories != value)

+ 1 - 0
source/components/UnixDirView.h

@@ -60,6 +60,7 @@ protected:
   virtual TColor __fastcall ItemColor(TListItem * Item);
   virtual UnicodeString __fastcall ItemFileName(TListItem * Item);
   virtual int __fastcall ItemImageIndex(TListItem * Item, bool Cache);
+  virtual TObject * __fastcall ItemData(TListItem * Item);
   virtual bool __fastcall ItemIsFile(TListItem * Item);
   virtual bool __fastcall ItemMatchesFilter(TListItem * Item, const TFileFilter &Filter);
   virtual Word __fastcall ItemOverlayIndexes(TListItem * Item);

+ 7 - 1
source/packages/filemng/CustomDirView.pas

@@ -262,6 +262,7 @@ type
     function GetIsRoot: Boolean; virtual; abstract;
     function ItemCanDrag(Item: TListItem): Boolean; virtual;
     function ItemColor(Item: TListItem): TColor; virtual;
+    function ItemData(Item: TListItem): TObject; virtual;
     function ItemImageIndex(Item: TListItem; Cache: Boolean): Integer; virtual; abstract;
     // ItemIsDirectory and ItemFullFileName is in public block
     function ItemIsRecycleBin(Item: TListItem): Boolean; virtual;
@@ -2134,6 +2135,11 @@ begin
   end;
 end;
 
+function TCustomDirView.ItemData(Item: TListItem): TObject;
+begin
+  Result := nil;
+end;
+
 function TCustomDirView.CustomCreateFileList(Focused, OnlyFocused: Boolean;
   FullPath: Boolean; FileList: TStrings; ItemObject: Boolean): TStrings;
 
@@ -2143,7 +2149,7 @@ function TCustomDirView.CustomCreateFileList(Focused, OnlyFocused: Boolean;
   begin
     Assert(Assigned(Item));
     if ItemObject then AObject := Item
-      else AObject := Item.Data;
+      else AObject := ItemData(Item);
 
     if FullPath then Result.AddObject(ItemFullFileName(Item), AObject)
       else Result.AddObject(ItemFileName(Item), AObject);