fixed size of buffer returned by wxFormatConverter (it was too large before)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59939 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -330,6 +330,17 @@ public:
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void shrink(size_t len)
|
||||
{
|
||||
wxASSERT_MSG( this->m_data->m_owned, "cannot shrink non-owned buffer" );
|
||||
wxASSERT_MSG( this->m_data->m_ref == 1, "can't shrink shared buffer" );
|
||||
|
||||
wxASSERT( len <= this->length() );
|
||||
|
||||
this->m_data->m_length = len;
|
||||
this->data()[len] = 0;
|
||||
}
|
||||
};
|
||||
|
||||
WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE( wxCharTypeBuffer<char> )
|
||||
|
@@ -200,8 +200,27 @@ public:
|
||||
|
||||
Can only be called on buffers that don't share data with another
|
||||
buffer (i.e. reference count of the data is 1).
|
||||
|
||||
@see shrink()
|
||||
*/
|
||||
bool extend(size_t len);
|
||||
|
||||
/**
|
||||
Shrinks the buffer to have size @a len and NUL-terminates the string
|
||||
at this length.
|
||||
|
||||
Can only be called on buffers that don't share data with another
|
||||
buffer (i.e. reference count of the data is 1).
|
||||
|
||||
@param len Length to shrink to. Must not be larger than current length.
|
||||
|
||||
@note The string is not reallocated to take less memory.
|
||||
|
||||
@since 2.9.0
|
||||
|
||||
@see extend()
|
||||
*/
|
||||
bool shrink(size_t len);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -152,7 +152,7 @@ public:
|
||||
m_nCopied = 0;
|
||||
}
|
||||
|
||||
wxCharTypeBuffer<CharType> Convert(const CharType *format)
|
||||
wxScopedCharTypeBuffer<CharType> Convert(const CharType *format)
|
||||
{
|
||||
// this is reset to NULL if we modify the format string
|
||||
m_fmtOrig = format;
|
||||
@@ -263,12 +263,14 @@ public:
|
||||
// format
|
||||
if ( m_fmtOrig )
|
||||
{
|
||||
return wxCharTypeBuffer<CharType>::CreateNonOwned(m_fmtOrig);
|
||||
return wxScopedCharTypeBuffer<CharType>::CreateNonOwned(m_fmtOrig);
|
||||
}
|
||||
else
|
||||
{
|
||||
// NULL-terminate converted format string:
|
||||
*m_fmtLast = 0;
|
||||
// shrink converted format string to actual size (instead of
|
||||
// over-sized allocation from CopyAllBefore()) and NUL-terminate
|
||||
// it:
|
||||
m_fmt.shrink(m_fmtLast - m_fmt.data());
|
||||
return m_fmt;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user