( vomberg | 2009. 07. 18., szo – 15:41 )

Na most azért nézzük már meg ezt a kódot, mert nekem nem áll össze az egész...

struct sock *sk = tun->sk; // initialize sk with tun->sk

if (!tun)
return POLLERR; // if tun is NULL return error

Magyarul itt a kóder egy slampos disznó, mert vagy legális az, hogy a tun == 0 és akkor milyen alapon dobná vissza hibával később, vagy illegális de akkor hogy merészel értéket adni a tun alapján a vizsgálat előtt?

Az optimalizáló "hibáját" nem tartom annak, mert logikus amit csinál, csak ugye arra bazírozták az optimalizáló kóderei a dolgot, hogyha valaki használ egy pointert akkor azt előtte ellenőrzi, hogy érvényes-e. Az pedig, hogy a 0 az egyszerre jelzi az érvénytelent ám lehet oda mmap-olni, hát mit mondjak... a 0 értéket a pointernél azonnal kell ellenőrizni és nem pedig a felhasználás után.