aboutsummaryrefslogtreecommitdiff
path: root/lib/libc/string
diff options
context:
space:
mode:
authorRobert Clausecker <fuz@FreeBSD.org>2023-07-10 22:10:52 +0000
committerRobert Clausecker <fuz@FreeBSD.org>2023-07-14 20:26:43 +0000
commit3f5788e0ed8e85567f651ad360596b8c330af5a9 (patch)
treec925116f91742a337b3aa744bc4c8842d8dafbcb /lib/libc/string
parente74bc7757a2ec538c5070973dbd83394933d4bfe (diff)
downloadsrc-3f5788e0ed8e85567f651ad360596b8c330af5a9.tar.gz
src-3f5788e0ed8e85567f651ad360596b8c330af5a9.zip
Diffstat (limited to 'lib/libc/string')
-rw-r--r--lib/libc/string/ffs.c2
-rw-r--r--lib/libc/string/ffsl.c2
-rw-r--r--lib/libc/string/ffsll.c2
3 files changed, 3 insertions, 3 deletions
diff --git a/lib/libc/string/ffs.c b/lib/libc/string/ffs.c
index c011b3390612..34140e3e4d85 100644
--- a/lib/libc/string/ffs.c
+++ b/lib/libc/string/ffs.c
@@ -47,5 +47,5 @@ __FBSDID("$FreeBSD$");
int
ffs(int mask)
{
- return (__builtin_ffs(mask));
+ return (mask == 0 ? 0 : __builtin_ctz(mask) + 1);
}
diff --git a/lib/libc/string/ffsl.c b/lib/libc/string/ffsl.c
index 6e1ac8ec45c1..701e23cdf8f4 100644
--- a/lib/libc/string/ffsl.c
+++ b/lib/libc/string/ffsl.c
@@ -44,5 +44,5 @@ __FBSDID("$FreeBSD$");
int
ffsl(long mask)
{
- return (__builtin_ffsl(mask));
+ return (mask == 0 ? 0 : __builtin_ctzl(mask) + 1);
}
diff --git a/lib/libc/string/ffsll.c b/lib/libc/string/ffsll.c
index b945658b9008..e94fb518eb03 100644
--- a/lib/libc/string/ffsll.c
+++ b/lib/libc/string/ffsll.c
@@ -44,5 +44,5 @@ __FBSDID("$FreeBSD$");
int
ffsll(long long mask)
{
- return (__builtin_ffsll(mask));
+ return (mask == 0 ? 0 : __builtin_ctzll(mask) + 1);
}