Kleines Crash-Quiz

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Kleines Crash-Quiz

Beitrag von Hitman »

Nimm das explizite "const" bei doSomething weg, dann sollte es gehen.
Soweit ich das sehe, wird ansonsten eine Referenz auf FField übergeben. Nun leert clear dieses FField, bevor es jenes erneut setzt. Damit ist "s" an dieser Stelle dann auch bereits leer - weil Referenz auf FField. Das DÜRFTE meines Erachtens im Prinzip wohl nicht so sein, könnte also einen Eintrag im Bugtracker wert sein.

(Getestet mit nem paar Wochen alten FPC 2.5.1; einen Crash gab es glücklicherweise aber nicht ;-))

Straightdog
Beiträge: 10
Registriert: Mo 1. Aug 2011, 18:52

Re: Kleines Crash-Quiz

Beitrag von Straightdog »

Gut erklärt!
Hitman hat geschrieben:Das DÜRFTE meines Erachtens im Prinzip wohl nicht so sein, könnte also einen Eintrag im Bugtracker wert sein.
Nö, das ist ein Feature, kein Bug. Zumindest laut [fpc-devel]: http://lists.freepascal.org/lists/fpc-d ... 24981.html" onclick="window.open(this.href);return false; (vorsicht, laaange Diskussion). Ich bin nicht der Meinung der Compilerentwickler - ich halte ein Sprachdesign, das bei einem häufig anzutreffenden Konstrukt wie "const" Parametern aus einem managed type wie Ansistring einen unmanaged type macht (indem die Referenzzählung wegoptimisiert wird) für eher suboptimal. Insbesondere in tiefen Klassenhierarchien kann das zu sehr schwer zu debuggenden Fehlern führen. Man muss ja nicht jeden Blödsinn, den Borland in seiner langen Geschichte gemacht hat, unbedingt auch in FreePascal übernehmen.
Hitman hat geschrieben:(Getestet mit nem paar Wochen alten FPC 2.5.1; einen Crash gab es glücklicherweise aber nicht ;-))
Was gab es denn statt dessen? Bei meinem 2.4.2 produziert das Programm zuverlässig SEGFAULTs.

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Kleines Crash-Quiz

Beitrag von Hitman »

Straightdog hat geschrieben:
Hitman hat geschrieben:(Getestet mit nem paar Wochen alten FPC 2.5.1; einen Crash gab es glücklicherweise aber nicht ;-))
Was gab es denn statt dessen? Bei meinem 2.4.2 produziert das Programm zuverlässig SEGFAULTs.
Einen leeren String, wie bei der shortstring-Variante.

Antworten