diff options
| author | Tomoyuki Sahara <[email protected]> | 2013-06-21 09:14:53 +0900 |
|---|---|---|
| committer | Tomoyuki Sahara <[email protected]> | 2013-06-21 09:14:53 +0900 |
| commit | 216e32751e79781ba3eb6319d7513b80a32c537e (patch) | |
| tree | 7256645e40ba17f8f63f5e492e4705b8f22094ae | |
| parent | 35defaf1c937408f8e5d817f25a24dbc75a64c99 (diff) | |
| download | mruby-216e32751e79781ba3eb6319d7513b80a32c537e.tar.gz mruby-216e32751e79781ba3eb6319d7513b80a32c537e.zip | |
Socket.gethostname always fails.
| -rw-r--r-- | src/socket.c | 9 | ||||
| -rw-r--r-- | test/socket.rb | 5 |
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 + |
