Zitat
Original von kls
Ich habe mir zwar alle Mühe gegeben, alle entsprechenden Stellen anzupassen, aber da ich selber das nicht nutze, ist es von meiner Seite her leider ungetestet. Wenn jemand da einen Fehler findet, bitte melden.
Klaus
Ich hab' mal nachgesehen, woran es liegt. Statt eines Patches hier eine kurze Erklärung:
Das Handling von Dateigrößen und File-Offsets erfolgt richtigerweise 64bittig. Das Problem liegt im Makro MEGABYTE() [tools.h, Zeile 41], was einen MB-Wert in Byte zurückgibt. Die Multiplikation erfolgt nur 32-bittig, so das es bei Werten über 2028 MB zum Integer-Überlauf kommt. Da hilft auch nicht, das man das Ergebnis einem Int64 zuweist.
Richtig muß es heißen:
#define MEGABYTE(n) ((n) * 1024LL * 1024LL)
So funktioniert's auch mit Dateigrößen jenseits 2048 MB.