diff -ur a/Source/build.cpp b/Source/build.cpp
--- a/Source/build.cpp	2023-07-28 01:18:23.532000000 +0800
+++ b/Source/build.cpp	2024-05-25 00:10:52.075484200 +0800
@@ -3682,7 +3682,7 @@
     CharEncConv cec;
     if (!g_outputenc.IsUTF16LE())
     {
-      size_t cbConv;
+      size_t cbConv = 0;
       if (!cec.Initialize(g_outputenc.GetCodepage(), -1) || !(data = (const TCHAR*) cec.Convert(data, cb, &cbConv)))
         PrintColorFmtMsg_ERR(_T("conversion failed!\n")), quit(); // Cannot use ERROR_MSG() here!
       cb = (DWORD) (cbConv + NStreamEncoding::GetCodeUnitSize(g_outputenc.GetCodepage())); // cbConv does not include the \0.
diff -ur a/Source/util.h b/Source/util.h
--- a/Source/util.h	2023-07-28 01:18:23.000000000 +0800
+++ b/Source/util.h	2024-05-25 00:11:11.098536200 +0800
@@ -138,7 +138,8 @@
   friend int fseek(S_t*s, long int offset, int origin)
   {
     if ((unsigned long) offset != (size_t) offset) return 1; // long int will usually fit in our size_t
-    size_t newpos, invalid = 0;
+    size_t newpos = 0;
+    size_t invalid = 0;
     switch(origin)
     {
     case SEEK_SET: newpos = (size_t) offset, invalid = offset < 0; break;
