![]() |
Delphi Bugs mit Lösungen...
Hallo Zusammen...
Ich dache mir, ich mache mal einen Thread auf mit Bugreports die Ich gepostet habe und bei denen die Lösung schon enthalten ist... Ich habe kein Projekt bei dem ich nicht wenigstens 2-3 Source-Files aus dem Delphi Source-Dir in mein Projekt mit meinen Fixes rüber ziehe. Hier mein letzter: Memory Leak in TFontGlyphManager mein QC (RSP-17256) ist closed, daher habe ich die Infos in RSP-18012 geschrieben. Änderungen in FMX.FontGlyphs.pas
Delphi-Quellcode:
destructor TFontGlyphManager.Destroy;
begin FreeResource; if Assigned(FMethods) then // FMethods.Free; // Fehlte inherited; end; und in
Delphi-Quellcode:
class function TFontGlyphManager.InternalGetFontGlyphManager: TFontGlyphManager;
Delphi-Quellcode:
Mavarik
// end;// 2 Zeilen tiefer
FCurrentManager.FMethods := TList<TMethodDescriptor>.Create; // Nur 1x end; |
AW: Delphi Bugs mit Lösungen...
wenn ich Zeit habe und die "rechtliche Freigabe" bekomme, veröffentliche ich auch mal ein paar unserer (alten) BLE Fixes... Delphi/FMX für IoT wird groß beworben, aber da "komische" Sachen seit XE8.1 teils immer weiter führen... wird langsam anstrengend
Aber Asche auf unser Haupt: 1. klar nutzt das kaum jemand und hier ist CrossPlattform + CrossHardwareStandard(BLE4.0->4.1->4.2) ne echte Herausforderung 2. wer es "wirklich" nutzt und weiß wie es (trotzdem)geht verrät es oft nicht gern öffentlich und erstellt daher keine QC Einträge |
AW: Delphi Bugs mit Lösungen...
Zitat:
Delphi-Quellcode:
kannst du dir sparen, das macht das
if Assigned
Delphi-Quellcode:
selbst. Unter ARC wird das vom Compiler sowieso durch eine nil-Zuweisung ersetzt, was die Abfrage ebenso obsolet macht.
Free
|
AW: Delphi Bugs mit Lösungen...
Zitat:
|
AW: Delphi Bugs mit Lösungen...
Zitat:
Delphi-Quellcode:
Warum wird im Free eigentlich nicht geprüft ob ARC und dann DisposeOf aufgerufen? Würde ne Menge an Code sparen.
if Assigned(FMethods) then
{$IFDEF AUTOREFCOUNT} FMethods.DisposeOf; {$ELSE} FMethods.Free; |
AW: Delphi Bugs mit Lösungen...
Zitat:
|
AW: Delphi Bugs mit Lösungen...
Dann könnte der Compiler das doch durch disposeof ersetzen :gruebel:
|
AW: Delphi Bugs mit Lösungen...
Zitat:
Disposeof wird nur benötigt wenn da mehrere Referenzen auf das selbe Object sind, und Ressourcen freigegeben werden müssen. Ansonsten besteht keinerlei Grund das einzusetzen. |
AW: Delphi Bugs mit Lösungen...
Zitat:
|
AW: Delphi Bugs mit Lösungen...
Waddn gruseliger Code ist das denn in TFontGlyphManager :wall:
Das können nur Artefakte aus VGScene Zeiten sein, wo noch Delphi 7 und andere Versionen unterstützt wurden, die noch kein class constructor/destructor kannten...
Delphi-Quellcode:
und
RegisterCharacterHandleMethod
Delphi-Quellcode:
sind übrigens auch defekt, die krachen nämlich, wenn vorher nicht
UnRegisterCharacterHandleMethod
Delphi-Quellcode:
aufgerufen wurde. Das muss man aber nicht machen, weil das ja eh statische Methoden sind (soll heißen, ich kann
TFontGlyphManager.Current
Delphi-Quellcode:
aufrufen). Das wiederum lässt mich vermuten, dass man FMethods früher (class constructor?) erzeugen und im entsprechenden destructor wieder freigeben sollte.
TFontGlyphManager.RegisterCharacterHandleMethod
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz