Denys Vlasenko, CPU mask'lerindeki set bit sayısını saymak için
bb_popcnt_32()/bb_popcnt_long() adında yeni bir yardımcı
fonksiyon çifti ekledi. 32-bit sürüm sorunsuzdu, ama unsigned long'un
32 bitten büyük olduğu (yani ULONG_MAX > 0xffffffff) 64-bit
sistemler için yazılan bildirimde bir yazım hatası vardı:
unsigned FAST_FUNC bb_popcnt_long(unsigned_long m);
unsigned long iki kelime olması gerekirken araya alt çizgi
girmiş: unsigned_long. C'de böyle bir tip yok — GCC bunu
"bilinmeyen tip adı" olarak reddediyor ve en yakın tanıdık ismi (unsigned
int) öneriyor. Bu satır sadece #if ULONG_MAX > 0xffffffff
bloğunun içinde olduğu için hata sadece 64-bit derleme hedeflerinde ortaya
çıkıyordu — bizim build ortamımız tam olarak bu kategoriye giriyor.
Aynı gün, yaklaşık 11.5 saat sonra ("libbb: fix 64-bit
bb_popcnt_long" commit'inde) Denys tek kelimelik düzeltmeyi yaptı:
unsigned_long → unsigned long. Tek satırlık, tek
karakterlik (alt çizgiyi boşlukla değiştirme) bir yazım hatası düzeltmesiydi.
Aşağıda düzeltme commit'inin gerçek diff'i var — dosya dosya gezinebilirsin.
| @@ -399,7 +399,7 @@ uint64_t bb_bswap_64(uint64_t x) FAST_FUNC; | |
| unsigned FAST_FUNC bb_popcnt_32(uint32_t m); | |
| #if ULONG_MAX > 0xffffffff | |
| - | unsigned FAST_FUNC bb_popcnt_long(unsigned_long m); |
| + | unsigned FAST_FUNC bb_popcnt_long(unsigned long m); |
| #else | |
| #define bb_popcnt_long(m) bb_popcnt_32(m) | |
| #endif | |