summaryrefslogtreecommitdiff
path: root/src/MXFTypes.cpp
diff options
context:
space:
mode:
authorjhurst <jhurst@cinecert.com>2019-01-28 09:56:13 +0100
committerjhurst <jhurst@cinecert.com>2019-01-28 09:56:13 +0100
commit6e07e413f784e870a78b77767f9546eaf8d20935 (patch)
treeca3605cf3f7707a8a5e631371cc854707d813acf /src/MXFTypes.cpp
parent348d85dad7de82fd697a9f9a36346d7428d2959d (diff)
o Moved to re-entrant forms of wcrtomb() and mbrtowc()
Diffstat (limited to 'src/MXFTypes.cpp')
-rwxr-xr-xsrc/MXFTypes.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/MXFTypes.cpp b/src/MXFTypes.cpp
index eda0783..a98a4d2 100755
--- a/src/MXFTypes.cpp
+++ b/src/MXFTypes.cpp
@@ -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 )
{