diff --git a/libtelnet.c b/libtelnet.c
index 7235975..b7319aa 100644
--- a/libtelnet.c
+++ b/libtelnet.c
@@ -35,21 +35,21 @@
 #define RFC1143_WANTYES_OP (RFC1143_WANTYES|RFC1143_OP)
 
 /* buffer sizes */
-static const unsigned int _buffer_sizes[] = {
+static const size_t _buffer_sizes[] = {
 	0,
 	512,
 	2048,
 	8192,
 	16384,
 };
-static const unsigned int _buffer_sizes_count = sizeof(_buffer_sizes) /
+static const size_t _buffer_sizes_count = sizeof(_buffer_sizes) /
 		sizeof(_buffer_sizes[0]);
 
 /* event dispatch helper; return value is value of the accept field of the
  * event struct after dispatch; used for the funky REQUEST event */
 static int _event(libtelnet_t *telnet, libtelnet_event_type_t type,
 		unsigned char command, unsigned char telopt,
-		const char *buffer, unsigned int size) {
+		const char *buffer, size_t size) {
 	libtelnet_event_t ev;
 	ev.buffer = buffer;
 	ev.size = size;
@@ -129,7 +129,7 @@
 
 /* push bytes out, compressing them first if need be */
 static void _send(libtelnet_t *telnet, const char *buffer,
-		unsigned int size) {
+		size_t size) {
 #ifdef HAVE_ZLIB
 	/* if we have a deflate (compression) zlib box, use it */
 	if (telnet->z != 0 && telnet->flags & LIBTELNET_PFLAG_DEFLATE) {
@@ -417,7 +417,7 @@
 static libtelnet_error_t _buffer_byte(libtelnet_t *telnet,
 		unsigned char byte) {
 	char *new_buffer;
-	unsigned int i;
+	size_t i;
 
 	/* check if we're out of room */
 	if (telnet->buffer_pos == telnet->buffer_size) {
@@ -455,9 +455,9 @@
 }
 
 static void _process(libtelnet_t *telnet, const char *buffer,
-		unsigned int size) {
+		size_t size) {
 	unsigned char byte;
-	unsigned int i, start;
+	size_t i, start;
 	for (i = start = 0; i != size; ++i) {
 		byte = buffer[i];
 		switch (telnet->state) {
@@ -615,7 +615,7 @@
 
 /* push a bytes into the state tracker */
 void libtelnet_push(libtelnet_t *telnet, const char *buffer,
-		unsigned int size) {
+		size_t size) {
 #ifdef HAVE_ZLIB
 	/* if we have an inflate (decompression) zlib stream, use it */
 	if (telnet->z != 0 && !(telnet->flags & LIBTELNET_PFLAG_DEFLATE)) {
@@ -797,8 +797,8 @@
 
 /* send non-command data (escapes IAC bytes) */
 void libtelnet_send_data(libtelnet_t *telnet, const char *buffer,
-		unsigned int size) {
-	unsigned int i, l;
+		size_t size) {
+	size_t i, l;
 
 	for (l = i = 0; i != size; ++i) {
 		/* dump prior portion of text, send escaped bytes */
@@ -820,7 +820,7 @@
 
 /* send sub-request */
 void libtelnet_send_subnegotiation(libtelnet_t *telnet, unsigned char telopt,
-		const char *buffer, unsigned int size) {
+		const char *buffer, size_t size) {
 	libtelnet_send_telopt(telnet, LIBTELNET_SB, telopt);
 	libtelnet_send_data(telnet, buffer, size);
 	libtelnet_send_command(telnet, LIBTELNET_SE);
