From 13d92ad62a669f2b418ef66f2135221c28a25866 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 6 May 2006 18:49:47 +0000 Subject: [PATCH] don't allocate 0-sized buffer in cWC2MB() even if input size is 0 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39075 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/strconv.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/common/strconv.cpp b/src/common/strconv.cpp index eafce97c8b..4e62a144b1 100644 --- a/src/common/strconv.cpp +++ b/src/common/strconv.cpp @@ -422,9 +422,15 @@ wxMBConv::cMB2WC(const char *inBuff, size_t inLen, size_t *outLen) const const wxCharBuffer wxMBConv::cWC2MB(const wchar_t *inBuff, size_t inLen, size_t *outLen) const { - const size_t dstLen = FromWChar(NULL, 0, inBuff, inLen); + size_t dstLen = FromWChar(NULL, 0, inBuff, inLen); if ( dstLen != wxCONV_FAILED ) { + if ( !dstLen ) + { + // special case: can't allocate 0 size buffer below + dstLen++; + } + wxCharBuffer buf(dstLen - 1); if ( FromWChar(buf.data(), dstLen, inBuff, inLen) != wxCONV_FAILED ) { @@ -433,11 +439,12 @@ wxMBConv::cWC2MB(const wchar_t *inBuff, size_t inLen, size_t *outLen) const *outLen = dstLen; const size_t nulLen = GetMBNulLen(); - if ( !NotAllNULs(buf.data() + dstLen - nulLen, nulLen) ) + if ( dstLen >= nulLen && + !NotAllNULs(buf.data() + dstLen - nulLen, nulLen) ) { // in this case the output is NUL-terminated and we're not // supposed to count NUL - (*outLen) -= nulLen; + *outLen -= nulLen; } } -- 2.45.2