SOURCES: poldek-cookie.patch - was doing a lot of these seeks, use...
Arkadiusz Miskiewicz
arekm w pld-linux.org
Czw, 21 Kwi 2005, 22:25:41 CEST
On Thursday 21 of April 2005 03:39, Patrys :: Patryk Zawadzki wrote:
Zbiorczo:
> Dnia 21-04-2005, czw o godzinie 01:02 +0200, Jakub Bogusz napisał(a):
> > On Thu, Apr 21, 2005 at 12:38:55AM +0200, Arkadiusz Miskiewicz wrote:
> > > > Wygląda na workaround metodą gwałtu analnego :D
> > >
> > > Pomijając, że nie sprawdza czy alokacja się udała (wynik fseeka też nie
> > > był sprawdzany choć hmm, chyba jak fseek się nie uda to po prostu nic
> > > się nie zmienia jeśli chodzi o wskaźnik pozycji w strumieniu) to z czym
> > > jest problem?
>
> Nie ma problemu, tylko przykro, że trzeba takie obejścia robić...
No niestety.
>
> > Jeszcze drugi podobny fseek() został - tylko z odczytaną 16-bitową liczbą
> > jako parametrem.
Chodzi o ten w pkguinf_restore() ? Tam właściwie nie wiadomo czy przesuwa się
do przodu czy do tyłu, a na dodatek ftell() w glibc 2.3.5 woła seek()'a z
filecookie więc nie wiem czy się uda zrobić taki myk by sprawdzać ftellem
gdzie się jest vs żądany offset tak by działało to szybciej niż obecnie :-/
> > BTW: temu powyższemu nie zdarza się mieć jakiegoś dużego argumentu?
> > Myślałem o sprawdzaniu size i w zależności od niego robienia fread()
> > lub fseek() - bo jak skądś się weźmie duża liczba 32-bitowa (choćby
> > z uszkodzonego indeksu), to poleci...
Teraz jest wersja z mallocem - tych wywołań afaik nie było zbyt wiele.
> A nie można zrobić w pętli fseeka aż wyczerpie parametr?
Chodzi o to by nie używać w ogóle fseeka, patrz któryś poprzedni post qboosha
o tym, że gzseek szuka cofając się do 0 i odczytując offset skompresowanego
strumienia jeśli chcesz się cofnąć co jest woooooooooolne.
--
Arkadiusz Miśkiewicz PLD/Linux Team
http://www.t17.ds.pwr.wroc.pl/~misiek/ http://ftp.pld-linux.org/
Więcej informacji o liście dyskusyjnej pld-devel-pl