summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--process.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/process.c b/process.c
index 0a97425b0a..fb8d26afa5 100644
--- a/process.c
+++ b/process.c
@@ -5577,6 +5577,12 @@ rb_getlogin(void)
# ifdef USE_GETLOGIN_R
+#if defined(__FreeBSD__)
+ typedef int getlogin_r_size_t;
+#else
+ typedef size_t getlogin_r_size_t;
+#endif
+
long loginsize = GETLOGIN_R_SIZE_INIT; /* maybe -1 */
if (loginsize < 0)
@@ -5590,7 +5596,7 @@ rb_getlogin(void)
int gle;
errno = 0;
- while ((gle = getlogin_r(login, loginsize)) != 0) {
+ while ((gle = getlogin_r(login, (getlogin_r_size_t)loginsize)) != 0) {
if (gle == ENOTTY || gle == ENXIO || gle == ENOENT) {
rb_str_resize(maybe_result, 0);