diff --git a/connector/c/tnt_io.c b/connector/c/tnt_io.c
index 0701351319405bb4301a2ab1bf584fcf5f1a0574..0d45b80754b5c0b60ddce99eb591cffcf74e81eb 100644
--- a/connector/c/tnt_io.c
+++ b/connector/c/tnt_io.c
@@ -420,12 +420,13 @@ tnt_io_recv(struct tnt *t, char *buf, size_t size)
 		}
 
 		t->rbuf.off = 0;
-		t->rbuf.top = tnt_io_recv_raw(t, t->rbuf.buf, t->rbuf.size);
-		if (t->rbuf.top <= 0) {
+		ssize_t top = tnt_io_recv_raw(t, t->rbuf.buf, t->rbuf.size);
+		if (top <= 0) {
 			t->errno_ = errno;
 			return TNT_ESYSTEM;
 		}
 
+		t->rbuf.top = top;
 		if (rv <= t->rbuf.top) {
 			memcpy(buf + off, t->rbuf.buf, rv);
 			t->rbuf.off = rv;