Scriptsprache Bugfixes
2 verfasser
Seite 1 von 1
Scriptsprache Bugfixes
Ich hab schonmal ein bissel an der Scriptsprache gebastelt und einige Sachen geändert, u.a. werden Fehlermeldungen präziser ausgegeben, verschachtelte Kommentare sind möglich und die Syntax ist nicht mehr ganz so streng.
Bitte versucht, alle möglichen Abstürze aus der Scriptengine herauszukitzeln und den fehlerhaften Scriptcode mir zu geben, sodass ich die Engine sicherer machen kann.
Bitte versucht, alle möglichen Abstürze aus der Scriptengine herauszukitzeln und den fehlerhaften Scriptcode mir zu geben, sodass ich die Engine sicherer machen kann.
Carli- Admin
- Anzahl der Beiträge : 1001
Anmeldedatum : 02.01.09
Re: Scriptsprache Bugfixes
Logische Verschachtelungen erzeugen eine Zugriffsverletzung:
Ich wollte irgendsoein Statement wie folgendes Schreiben:
Also wenn a = 1 und b = 2 ist, oder b = 3 ist soll das dings ausgeführt werden. Allgemein sind logische Operatoren etwas buggig.
Der Parser meckert übrigens nicht rum dabei. Ich brauchte 2 Stunden um herauszufinden dass der Fehler an obiger Bedingung lag und nicht an einem anderen frisch implementierten Codeschnipsel :/
Ich wollte irgendsoein Statement wie folgendes Schreiben:
- Code:
if((a = 1 and b = 2) or b = 3)
Also wenn a = 1 und b = 2 ist, oder b = 3 ist soll das dings ausgeführt werden. Allgemein sind logische Operatoren etwas buggig.
Der Parser meckert übrigens nicht rum dabei. Ich brauchte 2 Stunden um herauszufinden dass der Fehler an obiger Bedingung lag und nicht an einem anderen frisch implementierten Codeschnipsel :/
Re: Scriptsprache Bugfixes
- Code:
stdcall lkwlist_nextlocal(o)
{
var i;
i := 0;
while(Local(o).(i) <> 0 and i < 31){i++;};
return i;
}
Eigentlich sollte das Dings doch so lange "weitermachen", bis entweder 1 >= 31 ist oder Local(o).(i) = 0. Allerdings scheint das and einem or gleichgeschaltet zu sein, zumindest rattert die Schleife immer durch, bis i >= 31 ist.
Re: Scriptsprache Bugfixes
Zum oberen Post: ich hab das alles mal durchexerziert, aber anscheinend scheints zu funktionieren.
Die Klammern kannst du weglassen, da die Operatoren in genau der geklammerten Reihenfolge auch ihre natürliche Priorität haben.
Die Klammern kannst du weglassen, da die Operatoren in genau der geklammerten Reihenfolge auch ihre natürliche Priorität haben.
Carli- Admin
- Anzahl der Beiträge : 1001
Anmeldedatum : 02.01.09
Re: Scriptsprache Bugfixes
Ich hab für das 2te Beispiel einen Bug in der Scriptengine gefunden.
Ich hatte eine Registersicherung vergessen. (ecx wurde überschrieben beim Zugriff auf mov eax,[eax+4*ecx])
Ich hatte eine Registersicherung vergessen. (ecx wurde überschrieben beim Zugriff auf mov eax,[eax+4*ecx])
Carli- Admin
- Anzahl der Beiträge : 1001
Anmeldedatum : 02.01.09
Re: Scriptsprache Bugfixes
Jetzt macht es iwie gar keinen sinn mehr :/
In obigem Beispiel scheint die Bedingung nie wahr zu werden, de facto ist i aber < 31 und ohne diesen part gehts auch^^
In obigem Beispiel scheint die Bedingung nie wahr zu werden, de facto ist i aber < 31 und ohne diesen part gehts auch^^
Re: Scriptsprache Bugfixes
ja das war ein Bug im .-Operator.
Müsste committed sein
es ging darum, dass ein Register nicht gesichert wurde und dann anstatt "i<31" Speichermüll von der Letzten Rechnung in ecx landet.
Müsste committed sein
es ging darum, dass ein Register nicht gesichert wurde und dann anstatt "i<31" Speichermüll von der Letzten Rechnung in ecx landet.
Carli- Admin
- Anzahl der Beiträge : 1001
Anmeldedatum : 02.01.09
Seite 1 von 1
Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten