diff --git a/ConsoleBuf.hxx.in b/ConsoleBuf.hxx.in
index 32e680ca64010d6ccebf58d1975cf72d19092394..46d65a865f2d1a01b8c90e4a851c732ef61e6790 100644
--- a/ConsoleBuf.hxx.in
+++ b/ConsoleBuf.hxx.in
@@ -338,7 +338,7 @@ private:
   }
   bool decodeInputBuffer(const std::string buffer, std::wstring& wbuffer)
   {
-    int length = int(buffer.length());
+    size_t length = buffer.length();
     if (length == 0) {
       wbuffer = std::wstring();
       return true;
@@ -353,11 +353,12 @@ private:
       data += BOMsize;
       length -= BOMsize;
     }
-    const int wlength =
-      MultiByteToWideChar(actualCodepage, 0, data, length, NULL, 0);
+    const size_t wlength = static_cast<size_t>(MultiByteToWideChar(
+      actualCodepage, 0, data, static_cast<int>(length), NULL, 0));
     wchar_t* wbuf = new wchar_t[wlength];
     const bool success =
-      MultiByteToWideChar(actualCodepage, 0, data, length, wbuf, wlength) > 0
+      MultiByteToWideChar(actualCodepage, 0, data, static_cast<int>(length),
+                          wbuf, static_cast<int>(wlength)) > 0
       ? true
       : false;
     wbuffer = std::wstring(wbuf, wlength);