diff --git a/libraries/AP_Common/Bitmask.h b/libraries/AP_Common/Bitmask.h index 856257d468..70870c6271 100644 --- a/libraries/AP_Common/Bitmask.h +++ b/libraries/AP_Common/Bitmask.h @@ -108,7 +108,15 @@ public: if (bits[i] == 0) { continue; } - return i*32 + __builtin_ffs(bits[i]) - 1; + int fs; + if (sizeof(bits[i]) <= sizeof(int)) { + fs = __builtin_ffs(bits[i]); + } else if (sizeof(bits[i]) <= sizeof(long)) { + fs = __builtin_ffsl(bits[i]); + } else { + fs = __builtin_ffsll(bits[i]); + } + return i*32 + fs - 1; } return -1; }