o Moved to re-entrant forms of wcrtomb() and mbrtowc()
authorjhurst <jhurst@cinecert.com>
Mon, 28 Jan 2019 08:56:13 +0000 (09:56 +0100)
committerjhurst <jhurst@cinecert.com>
Mon, 28 Jan 2019 08:56:13 +0000 (09:56 +0100)
.gitignore
src/MXFTypes.cpp

index dabec243d21d7c728b3947b89928b5281d67ceb1..8aed0ccb51678fec8aa6718d20e2fee8408751c8 100644 (file)
@@ -68,3 +68,5 @@ src/kmrandgen
 src/kmuuidgen
 src/pinkwave
 src/wavesplit
+src/phdr-unwrap
+src/phdr-wrap
index eda07834a92ecadaa2eb6e000fdcc65f7f0bad6a..a98a4d2fd701f42c4eb17d6d3156df56000b5f0f 100755 (executable)
@@ -279,11 +279,14 @@ ASDCP::MXF::UTF16String::Unarchive(Kumu::MemIOReader* Reader)
   erase();
   const ui16_t* p = (ui16_t*)Reader->CurrentData();
   ui32_t length = Reader->Remainder() / 2;
-  char mb_buf[MB_LEN_MAX+1];
+  char mb_buf[MB_LEN_MAX];
+
+  mbstate_t ps;
+  memset(&ps, 0, sizeof(mbstate_t));
 
   for ( ui32_t i = 0; i < length; i++ )
     {
-      int count = wctomb(mb_buf, KM_i16_BE(p[i]));
+      int count = wcrtomb(mb_buf, KM_i16_BE(p[i]), &ps);
 
       if ( count == -1 )
        {
@@ -316,9 +319,12 @@ ASDCP::MXF::UTF16String::Archive(Kumu::MemIOWriter* Writer) const
   ui32_t length = size();
   ui32_t i = 0;
 
+  mbstate_t ps;
+  memset(&ps, 0, sizeof(mbstate_t));
+
   while ( i < length )
     {
-      int count = mbtowc(&wcp, mbp+i, remainder);
+      int count = mbrtowc(&wcp, mbp+i, remainder, &ps);
 
       if ( count == -1 )
        {