summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/socket.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/socket.c b/src/socket.c
index e8f1f6135..7966b9c83 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -560,14 +560,17 @@ static mrb_value
mrb_socket_gethostname(mrb_state *mrb, mrb_value cls)
{
mrb_value buf;
+ size_t bufsize;
#ifdef HOST_NAME_MAX
- buf = mrb_str_buf_new(mrb, HOST_NAME_MAX+1);
+ bufsize = HOST_NAME_MAX + 1;
#else
- buf = mrb_str_buf_new(mrb, 256);
+ bufsize = 256;
#endif
- if (gethostname(RSTRING_PTR(buf), RSTRING_LEN(buf)) != 0)
+ buf = mrb_str_buf_new(mrb, bufsize);
+ if (gethostname(RSTRING_PTR(buf), bufsize) != 0)
mrb_sys_fail(mrb, "gethostname");
+ mrb_str_resize(mrb, buf, strlen(RSTRING_PTR(buf)));
return buf;
}