Seite 2 von 2

Verfasst: Mi 16. Mär 2005, 18:19
von bean944
Hi,

ich hab mir gerade den Sourcecode angeschaut, die Maximalgrösse ist an der folgenden Stelle in der Datei Profile.cpp hart einprogrammiert (3.9-rc2a):

==========================================================
#define MAX_PLAYER_STATS_XML_SIZE_BYTES \
100 /* Songs */ \
* 3 /* Steps per Song */ \
* 10 /* HighScores per Steps */ \
* 1024 /* size in bytes of a HighScores XNode */
==========================================================

Die Meldung sollte also eigentlich erst ab einer Dateigrösse von 3MB auftreten. Da der Wert fest definiert ist, kannst Du Deine Suche nach Konfig-Option abbrechen, es gibt keine.

Behebung ist nur durch Veränderung der Definition + Neukompilieren möglich. Evtl. könntest Du auch bei den Stepmania-Entwicklern einen Bugreport einkippen, damit sie die Maximalgrösse etwas erweitern, dann wirds vielleicht in der nächsten Version besser.

Wenn Du eine Linux-Version verwendest, könnte ich Dir eine spezielle compilieren, aber das könntest Du dann vermutlich selbst :-).

Ciao
bean

Verfasst: Mi 16. Mär 2005, 19:19
von Reddy79
Na, das ist mal eine ausführliche und kompetente Antwort.

Wird in diesem Forum sehr geschätz...

Verfasst: Mi 16. Mär 2005, 20:59
von -TigerYoshiki-
bean944 hat geschrieben: Die Meldung sollte also eigentlich erst ab einer Dateigrösse von 3MB auftreten. Da der Wert fest definiert ist, kannst Du Deine Suche nach Konfig-Option abbrechen, es gibt keine.
Nun meine .xml ist 6.55 MB groß und ich hatte noch nie irgendwelche Probleme...

Check mal deinen virtuellen Arbeitsspeicher... vielleicht ist der zu gering.

Verfasst: Mi 16. Mär 2005, 22:42
von bean944
Hi,
-TigerYoshiki- hat geschrieben:
Nun meine .xml ist 6.55 MB groß und ich hatte noch nie irgendwelche Probleme...

Check mal deinen virtuellen Arbeitsspeicher... vielleicht ist der zu gering.
Also der virtuelle Arbeitsspeicher kann damit nicht viel zu tun haben.

Es gibt zwei Möglichkeiten, warums bei Dir funktioniert, entweder hast Du nicht die aktuelle Version 3.9rc2a, oder Du hast schon eine gepatchte Version, die nicht direkt vom www.stepmania.com heruntergeladen wurde. Ich hab sie mir gerade nochmal geholt, und die aktuelle Version zeigt genau das von herge beschriebene Verhalten.

Ist auch nicht anders zu erwarten, ich zeig Dir auch gerne nochmal den Codebereich in der Profile.cpp, in der der Vergleich mit Ausgabe der Fehlermeldung von herge durchgeführt wird:

===========================================================================
//
// Don't unreasonably large stats.xml files.
//
if( !IsMachine() ) // only check stats coming from the player
{
int iBytes = FILEMAN->GetFileSizeInBytes( fn );
if( iBytes > MAX_PLAYER_STATS_XML_SIZE_BYTES )
{
LOG->Warn( "The file '%s' is unreasonably large. It won't be loaded.", fn.c_str() );
break;
}
}
===========================================================================
Der Quellcode ist sehr schön dokumentiert, man sieht dass zuerst die Grösse der Datei eingelesen wird, und der ermittelte Wert dann mit "if( iBytes > MAX_PLAYER_STATS_XML_SIZE_BYTES )" mit der oben bereits erwähnten fest vordefinierten Grösse von 3MB verglichen wird. Ist die Datei grösser, wird die Warnung ins log ausgegeben und mit dem break das weitere Einlesen der Datei abgebrochen.

Hoffe das war jetzt ausführlich genug :-).

Um auch mal was konstruktives beizutragen, wenn ich jetzt noch irgendwo das directx 8.1 sdk auftreiben kann, das gibts bei Microsoft leider nicht mehr, versuche ich mich mal an einer gepatchten Windows-Version...

Alternativ und für mich bequemer, vielleicht verrät Tiger uns ja wo er seine Version her hat :-)

Ciao
bean

Verfasst: Mi 16. Mär 2005, 23:04
von -TigerYoshiki-
bean944 hat geschrieben: Es gibt zwei Möglichkeiten, warums bei Dir funktioniert, entweder hast Du nicht die aktuelle Version 3.9rc2a, oder Du hast schon eine gepatchte Version, die nicht direkt vom www.stepmania.com heruntergeladen wurde.
EDIT: OK vergiss alles, was ich gesagt habe. Das StepMania-Team hat wahrscheinlich ihr Programm verhunzt und ich habe mal wieder auf die falschen Dateien geschaut. ^^;

Trotzdem verstehe ich nicht, warum man solche Grenzen einbaut. :?

Verfasst: Do 17. Mär 2005, 00:34
von herge
vielen Dank insbesondere an bean944; jetzt weiss ich wenigstens, dass es nicht (ganz) an mir liegt :D
und ja ich benutze die aktuelle RC2 Mac-Version

Verfasst: Do 17. Mär 2005, 01:48
von bean944
@Tiger:

Eine Begrenzung der Dateigrösse macht prinzipiell schon Sinn, speziell bei den Statistik-Dateien. Die sind relativ häufig zum Schreiben geöffnet, sodass die Wahrscheinlichkeit recht hoch ist, dass sie bei einem Absturz zerschossen werden.
Beim nächsten Start würde das Prog dann gleich wieder absemmeln beim Versuch eine riesige XML-Datei zu parsen.

Aber in einem hast Du natürlich recht, wäre vielleicht ganz sinnvoll die Grenze nicht hart einzuprogrammieren, sondern konfigurierbar zu machen.

@herge

Ups, wenn Du auf dem Mac spielst, kann ich Dir nicht weiterhelfen, da hab ich nichtmal zu einem Rechner Zugang, sorry. Dann spare ich mir auch den weiteren Kampf mit dem VC++

Ciao
bean