From: Jean Privat Date: Sat, 30 May 2015 00:37:42 +0000 (-0400) Subject: Merge: Fix reading from Sockets X-Git-Tag: v0.7.5~2 X-Git-Url: http://nitlanguage.org?hp=52505890ed629b102a85b91d908d5decab9d09f7 Merge: Fix reading from Sockets Pull-Request: #1418 Reviewed-by: Lucas Bajolet Reviewed-by: Jean Privat --- diff --git a/lib/socket/socket.nit b/lib/socket/socket.nit index a665b41..4885805 100644 --- a/lib/socket/socket.nit +++ b/lib/socket/socket.nit @@ -175,14 +175,14 @@ class TCPStream close end_reached = true end - enlarge(_buffer_capacity + read.length) + enlarge(_buffer_length + read.length) read.copy_to_native(_buffer, read.length, 0, 0) _buffer_length = read.length end fun enlarge(len: Int) do if _buffer_capacity >= len then return - while _buffer_capacity < len do _buffer_capacity *= 2 + while _buffer_capacity < len do _buffer_capacity = _buffer_capacity * 2 + 2 var ns = new NativeString(_buffer_capacity) _buffer.copy_to(ns, _buffer_length - _buffer_pos, _buffer_pos, 0) _buffer = ns diff --git a/lib/socket/socket_c.nit b/lib/socket/socket_c.nit index ee6173e..d9056d6 100644 --- a/lib/socket/socket_c.nit +++ b/lib/socket/socket_c.nit @@ -138,14 +138,14 @@ extern class NativeSocket `{ int* `} return write(*self, &byt, 1); `} - fun read: String import NativeString.to_s_with_length, NativeString.to_s_with_copy `{ - static char c[1024]; + fun read: String import NativeString.to_s_with_length, NativeString `{ + char *c = new_NativeString(1024); int n = read(*self, c, 1023); if(n < 0) { return NativeString_to_s_with_length("",0); } c[n] = 0; - return NativeString_to_s_with_copy(c); + return NativeString_to_s_with_length(c, n); `} # Sets an option for the socket