From 216e32751e79781ba3eb6319d7513b80a32c537e Mon Sep 17 00:00:00 2001 From: Tomoyuki Sahara Date: Fri, 21 Jun 2013 09:14:53 +0900 Subject: Socket.gethostname always fails. --- src/socket.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src') 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; } -- cgit v1.2.3