summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTomoyuki Sahara <[email protected]>2013-06-21 09:14:53 +0900
committerTomoyuki Sahara <[email protected]>2013-06-21 09:14:53 +0900
commit216e32751e79781ba3eb6319d7513b80a32c537e (patch)
tree7256645e40ba17f8f63f5e492e4705b8f22094ae
parent35defaf1c937408f8e5d817f25a24dbc75a64c99 (diff)
downloadmruby-216e32751e79781ba3eb6319d7513b80a32c537e.tar.gz
mruby-216e32751e79781ba3eb6319d7513b80a32c537e.zip
Socket.gethostname always fails.
-rw-r--r--src/socket.c9
-rw-r--r--test/socket.rb5
2 files changed, 11 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;
}
diff --git a/test/socket.rb b/test/socket.rb
index 1ccf05364..309e7cf11 100644
--- a/test/socket.rb
+++ b/test/socket.rb
@@ -128,3 +128,8 @@ end
#assert('TCPSocket.new') do
#assert('TCPSocket#close') do
#assert('TCPSocket#write') do
+
+assert('Socket.gethostname') do
+ assert_true(Socket.gethostname.is_a? String)
+end
+