HaxeFoundation / HaxeFoundation/hxcpp
Invalid cast succeeds and leads to crash
- Vorherrschende Sprache
- C++
- Sterne
- 330
- Forks
- 227
- Ø Merge
- 2 T. 16 Std.
- Gemergte PRs (30 T.)
- 18
Beschreibung
Here is a simple class to reproduce the issue:
```
class HxcppBug
{
public static function main()
{
var s : String = "";
var c = try cast(s, Interface) catch (e : Dynamic) null;
if ((c == null) || c.foo) {
trace("Impossible");
}
}
}
private interface Interface
{
var foo(get, null) : Bool;
}
```
This program crashes. c should be evaluated to null, but is instead just assigned from s. Then the call to the get_foo() function crashes since there is no such function on String.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginnen Sie mit dem bereitgestellten Haxe-Reproducer und führen Sie ihn durch das C++-Backend aus, um zu bestätigen, dass der ungültige Cast String statt null zurückgibt und beim Zugriff auf foo abstürzt. Verfolgen Sie die Cast- und Interface-Dispatch-Pfade der Laufzeit in den C++-Runtime-Dateien des Repositorys; als erledigt gilt die Aufgabe, wenn der Reproducer den Cast als null auswertet und nicht mehr abstürzt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- cpp
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 42/100