diff options
| author | jhurst <jhurst@cinecert.com> | 2019-01-28 09:56:13 +0100 |
|---|---|---|
| committer | jhurst <jhurst@cinecert.com> | 2019-01-28 09:56:13 +0100 |
| commit | 6e07e413f784e870a78b77767f9546eaf8d20935 (patch) | |
| tree | ca3605cf3f7707a8a5e631371cc854707d813acf /src/MXFTypes.cpp | |
| parent | 348d85dad7de82fd697a9f9a36346d7428d2959d (diff) | |
o Moved to re-entrant forms of wcrtomb() and mbrtowc()
Diffstat (limited to 'src/MXFTypes.cpp')
| -rwxr-xr-x | src/MXFTypes.cpp | 12 |
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 ) { |
