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;
|
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> )
|
WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE( wxCharTypeBuffer<char> )
|
||||||
|
@@ -200,8 +200,27 @@ public:
|
|||||||
|
|
||||||
Can only be called on buffers that don't share data with another
|
Can only be called on buffers that don't share data with another
|
||||||
buffer (i.e. reference count of the data is 1).
|
buffer (i.e. reference count of the data is 1).
|
||||||
|
|
||||||
|
@see shrink()
|
||||||
*/
|
*/
|
||||||
bool extend(size_t len);
|
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;
|
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
|
// this is reset to NULL if we modify the format string
|
||||||
m_fmtOrig = format;
|
m_fmtOrig = format;
|
||||||
@@ -263,12 +263,14 @@ public:
|
|||||||
// format
|
// format
|
||||||
if ( m_fmtOrig )
|
if ( m_fmtOrig )
|
||||||
{
|
{
|
||||||
return wxCharTypeBuffer<CharType>::CreateNonOwned(m_fmtOrig);
|
return wxScopedCharTypeBuffer<CharType>::CreateNonOwned(m_fmtOrig);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// NULL-terminate converted format string:
|
// shrink converted format string to actual size (instead of
|
||||||
*m_fmtLast = 0;
|
// over-sized allocation from CopyAllBefore()) and NUL-terminate
|
||||||
|
// it:
|
||||||
|
m_fmt.shrink(m_fmtLast - m_fmt.data());
|
||||||
return m_fmt;
|
return m_fmt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user