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