diff -Nurd xerces-c-3.1.1.orig/src/xercesc/util/XMLUTF8Transcoder.cpp xerces-c-3.1.1/src/xercesc/util/XMLUTF8Transcoder.cpp
--- xerces-c-3.1.1.orig/src/xercesc/util/XMLUTF8Transcoder.cpp	2010-04-11 09:04:59.000000000 -0400
+++ xerces-c-3.1.1/src/xercesc/util/XMLUTF8Transcoder.cpp	2023-03-03 00:45:43.000000000 -0500
@@ -178,7 +178,7 @@
         if((gUTFByteIndicatorTest[trailingBytes] & *srcPtr) != gUTFByteIndicator[trailingBytes]) {
             char pos[2] = {(char)0x31, 0}; 
             char len[2] = {(char)(trailingBytes+0x31), 0};
-            char byte[2] = {*srcPtr,0};
+            char byte[2] = {(char)*srcPtr,0};
             ThrowXMLwithMemMgr3(UTFDataFormatException, XMLExcepts::UTF8_FormatError, pos, byte, len, getMemoryManager());
         }
 
@@ -246,8 +246,8 @@
                 //
                 if (( *srcPtr == 0xE0) && ( *(srcPtr+1) < 0xA0)) 
                 {
-                    char byte0[2] = {*srcPtr    ,0};
-                    char byte1[2] = {*(srcPtr+1),0};
+                    char byte0[2] = {(char)*srcPtr    ,0};
+                    char byte1[2] = {(char)*(srcPtr+1),0};
 
                     ThrowXMLwithMemMgr2(UTFDataFormatException
                                       , XMLExcepts::UTF8_Invalid_3BytesSeq
@@ -284,8 +284,8 @@
 
                 if ((*srcPtr == 0xED) && (*(srcPtr+1) >= 0xA0))
                 {
-                    char byte0[2] = {*srcPtr,    0};
-                    char byte1[2] = {*(srcPtr+1),0};
+                    char byte0[2] = {(char)*srcPtr,    0};
+                    char byte1[2] = {(char)*(srcPtr+1),0};
 
                      ThrowXMLwithMemMgr2(UTFDataFormatException
                               , XMLExcepts::UTF8_Irregular_3BytesSeq
@@ -310,8 +310,8 @@
                 if (((*srcPtr == 0xF0) && (*(srcPtr+1) < 0x90)) ||
                     ((*srcPtr == 0xF4) && (*(srcPtr+1) > 0x8F))  )
                 {
-                    char byte0[2] = {*srcPtr    ,0};
-                    char byte1[2] = {*(srcPtr+1),0};
+                    char byte0[2] = {(char)*srcPtr    ,0};
+                    char byte1[2] = {(char)*(srcPtr+1),0};
 
                     ThrowXMLwithMemMgr2(UTFDataFormatException
                                       , XMLExcepts::UTF8_Invalid_4BytesSeq
@@ -344,7 +344,7 @@
                  * surrogates, nor U+FFFE and U+FFFF (but it does allow other noncharacters).
                  ***/
                 char len[2]  = {(char)(trailingBytes+0x31), 0};
-                char byte[2] = {*srcPtr,0};
+                char byte[2] = {(char)*srcPtr,0};
 
                 ThrowXMLwithMemMgr2(UTFDataFormatException
                                   , XMLExcepts::UTF8_Exceeds_BytesLimit
diff -Nurd xerces-c-3.1.1.orig/src/xercesc/util/XMLUTF8Transcoder.hpp xerces-c-3.1.1/src/xercesc/util/XMLUTF8Transcoder.hpp
--- xerces-c-3.1.1.orig/src/xercesc/util/XMLUTF8Transcoder.hpp	2010-04-11 09:04:59.000000000 -0400
+++ xerces-c-3.1.1/src/xercesc/util/XMLUTF8Transcoder.hpp	2023-03-03 00:45:43.000000000 -0500
@@ -107,7 +107,7 @@
     {
         char len[2]  = {(char)(trailingBytes+0x31), 0};
         char pos[2]  = {(char)(position+0x31), 0};
-        char byte[2] = {toCheck,0};
+        char byte[2] = {(char)toCheck,0};
         ThrowXMLwithMemMgr3(UTFDataFormatException, XMLExcepts::UTF8_FormatError, pos, byte, len, getMemoryManager());
     }
 
diff -Nurd xerces-c-3.1.1.orig/src/xercesc/util/regx/ParserForXMLSchema.cpp xerces-c-3.1.1/src/xercesc/util/regx/ParserForXMLSchema.cpp
--- xerces-c-3.1.1.orig/src/xercesc/util/regx/ParserForXMLSchema.cpp	2008-07-22 16:05:05.000000000 -0400
+++ xerces-c-3.1.1/src/xercesc/util/regx/ParserForXMLSchema.cpp	2023-03-03 00:45:43.000000000 -0500
@@ -156,7 +156,7 @@
         break;
     default:
         {
-        XMLCh chString[] = {chBackSlash, ch, chNull};        
+        XMLCh chString[] = {chBackSlash, (XMLCh)ch, chNull};
         ThrowXMLwithMemMgr1(ParseException,XMLExcepts::Parser_Process2, chString, getMemoryManager());
         }
     }
diff -Nurd xerces-c-3.1.1.orig/src/xercesc/util/regx/RegxParser.cpp xerces-c-3.1.1/src/xercesc/util/regx/RegxParser.cpp
--- xerces-c-3.1.1.orig/src/xercesc/util/regx/RegxParser.cpp	2009-11-11 05:03:53.000000000 -0500
+++ xerces-c-3.1.1/src/xercesc/util/regx/RegxParser.cpp	2023-03-03 00:45:43.000000000 -0500
@@ -691,11 +691,11 @@
                     || (ch == chDash && getCharData() == chCloseSquare && firstLoop))) {
                 // if regex = [-] then invalid...
                 // '[', ']', '-' not allowed and should be escaped
-                XMLCh chStr[] = { ch, chNull };
+                XMLCh chStr[] = { (XMLCh)ch, chNull };
                 ThrowXMLwithMemMgr2(ParseException,XMLExcepts::Parser_CC6, chStr, chStr, getMemoryManager());
             }
             if (ch == chDash && getCharData() == chDash && getState() != REGX_T_BACKSOLIDUS && !wasDecoded) {
-                XMLCh chStr[] = { ch, chNull };
+                XMLCh chStr[] = { (XMLCh)ch, chNull };
                 ThrowXMLwithMemMgr2(ParseException,XMLExcepts::Parser_CC6, chStr, chStr, getMemoryManager());
             }
 
@@ -720,7 +720,7 @@
                 else {
 
                     XMLInt32 rangeEnd = getCharData();
-                    XMLCh rangeEndStr[] = { rangeEnd, chNull };
+                    XMLCh rangeEndStr[] = { (XMLCh)rangeEnd, chNull };
 
                     if (type == REGX_T_CHAR) {
 
@@ -737,7 +737,7 @@
                     processNext();
 
                     if (ch > rangeEnd) {
-                        XMLCh chStr[] = { ch, chNull };
+                        XMLCh chStr[] = { (XMLCh)ch, chNull };
                         ThrowXMLwithMemMgr2(ParseException,XMLExcepts::Parser_Ope3, rangeEndStr, chStr, getMemoryManager());
                     }
 
@@ -845,7 +845,7 @@
         break;
     default:
     {
-        XMLCh chString[] = {chBackSlash, ch, chNull};        
+        XMLCh chString[] = {chBackSlash, (XMLCh)ch, chNull};
         ThrowXMLwithMemMgr1(ParseException,XMLExcepts::Parser_Process2, chString, getMemoryManager());
     }
     }