rpm-fast-alAddPackage.patch chyba coś psuje
Jakub Bogusz
qboosh w prioris.mini.pw.edu.pl
Pią, 6 Lip 2001, 15:16:00 CEST
Nie wiem dokładnie co - może to mieć coś wspólnego z nieznajdowaniem
plików istniejących w bazie (nie próbowałem używać rpm z tym patchem -
tylko na podstawie analizy źródeł i patcha).
W modyfikowanej pętli jest przypisanie:
dirMapping[dirNum] = dirMatch - al->dirs;
W wersji pierwotnej indeksy w dirMatch nie zmieniały się aż do wywołania
qsort() trochę dalej. Natomiast w wersji przerobionej indeksy w dirMatch
zmieniają się cały czas, natomiast mapowanie w dirMapping nie jest
poprawiane.
Dalej - między zmodyfikowaną pętlą a qsort() mamy drugą pętlę, w której
jest używana tablica dirMapping - w wersji przerobionej zawierająca
błędne indeksy.
Żeby to dobrze działało wraz z memmove trzeba by było zwiększyć o 1
wszystkie elementy dirMapping które są >= (dirMatch-al->dirs). Tylko
wtedy może to nie być szybsze od oryginalnej wersji.
Przy okazji zauważyłem memory leak (już w oryginalnym rpm-ie) - dirMapping
nigdzie nie jest zwalniana.
--
Jakub Bogusz
http://prioris.mini.pw.edu.pl/~qboosh/
Więcej informacji o liście dyskusyjnej pld-devel-pl