don't initialize m_str twice in wxCharBuffer ctor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16624 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Name: buffer.h
|
// Name: wx/buffer.h
|
||||||
// Purpose: auto buffer classes: buffers which automatically free memory
|
// Purpose: auto buffer classes: buffers which automatically free memory
|
||||||
// Author: Vadim Zeitlin
|
// Author: Vadim Zeitlin
|
||||||
// Modified by:
|
// Modified by:
|
||||||
@@ -27,44 +27,44 @@ class wxCharBuffer
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxCharBuffer(const char *str)
|
wxCharBuffer(const char *str)
|
||||||
: m_str(NULL)
|
: m_str(str ? strdup(str) : NULL)
|
||||||
{
|
{
|
||||||
wxASSERT_MSG( str, wxT("NULL string in wxCharBuffer") );
|
wxASSERT_MSG( str, wxT("NULL string in wxCharBuffer") );
|
||||||
|
|
||||||
m_str = str ? strdup(str) : (char *)NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxCharBuffer(size_t len)
|
wxCharBuffer(size_t len)
|
||||||
: m_str(NULL)
|
: m_str((char *)malloc((len + 1)*sizeof(char)))
|
||||||
{
|
{
|
||||||
m_str = (char *)malloc(len+1);
|
|
||||||
m_str[len] = '\0';
|
m_str[len] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
// no need to check for NULL, free() does it
|
// no need to check for NULL, free() does it
|
||||||
~wxCharBuffer() { free(m_str); }
|
~wxCharBuffer() { free(m_str); }
|
||||||
|
|
||||||
wxCharBuffer(const wxCharBuffer& src)
|
wxCharBuffer(const wxCharBuffer& src)
|
||||||
: m_str(src.m_str)
|
: m_str(src.m_str)
|
||||||
{
|
{
|
||||||
// no reference count yet...
|
// no reference count yet...
|
||||||
((wxCharBuffer*)&src)->m_str = (char *)NULL;
|
((wxCharBuffer*)&src)->m_str = (char *)NULL;
|
||||||
}
|
}
|
||||||
wxCharBuffer& operator=(const wxCharBuffer& src)
|
wxCharBuffer& operator=(const wxCharBuffer& src)
|
||||||
{
|
{
|
||||||
m_str = src.m_str;
|
m_str = src.m_str;
|
||||||
// no reference count yet...
|
// no reference count yet...
|
||||||
((wxCharBuffer*)&src)->m_str = (char *)NULL;
|
((wxCharBuffer*)&src)->m_str = (char *)NULL;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *data() const { return m_str; }
|
const char *data() const { return m_str; }
|
||||||
operator const char *() const { return m_str; }
|
operator const char *() const { return m_str; }
|
||||||
char operator[](size_t n) const { return m_str[n]; }
|
char operator[](size_t n) const { return m_str[n]; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char *m_str;
|
char *m_str;
|
||||||
};
|
};
|
||||||
|
|
||||||
#if wxUSE_WCHAR_T
|
#if wxUSE_WCHAR_T
|
||||||
|
|
||||||
class wxWCharBuffer
|
class wxWCharBuffer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -85,37 +85,37 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
wxWCharBuffer(size_t len)
|
wxWCharBuffer(size_t len)
|
||||||
: m_wcs((wchar_t *)NULL)
|
: m_wcs((wchar_t *)malloc((len + 1)*sizeof(wchar_t)))
|
||||||
{
|
{
|
||||||
m_wcs = (wchar_t *)malloc((len+1)*sizeof(wchar_t));
|
|
||||||
m_wcs[len] = L'\0';
|
m_wcs[len] = L'\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
// no need to check for NULL, free() does it
|
// no need to check for NULL, free() does it
|
||||||
~wxWCharBuffer() { free(m_wcs); }
|
~wxWCharBuffer() { free(m_wcs); }
|
||||||
|
|
||||||
wxWCharBuffer(const wxWCharBuffer& src)
|
wxWCharBuffer(const wxWCharBuffer& src)
|
||||||
: m_wcs(src.m_wcs)
|
: m_wcs(src.m_wcs)
|
||||||
{
|
{
|
||||||
// no reference count yet...
|
// no reference count yet...
|
||||||
((wxWCharBuffer*)&src)->m_wcs = (wchar_t *)NULL;
|
((wxWCharBuffer*)&src)->m_wcs = (wchar_t *)NULL;
|
||||||
}
|
}
|
||||||
wxWCharBuffer& operator=(const wxWCharBuffer& src)
|
wxWCharBuffer& operator=(const wxWCharBuffer& src)
|
||||||
{
|
{
|
||||||
m_wcs = src.m_wcs;
|
m_wcs = src.m_wcs;
|
||||||
// no reference count yet...
|
// no reference count yet...
|
||||||
((wxWCharBuffer*)&src)->m_wcs = (wchar_t *)NULL;
|
((wxWCharBuffer*)&src)->m_wcs = (wchar_t *)NULL;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
const wchar_t *data() const { return m_wcs; }
|
const wchar_t *data() const { return m_wcs; }
|
||||||
operator const wchar_t *() const { return m_wcs; }
|
operator const wchar_t *() const { return m_wcs; }
|
||||||
wchar_t operator[](size_t n) const { return m_wcs[n]; }
|
wchar_t operator[](size_t n) const { return m_wcs[n]; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wchar_t *m_wcs;
|
wchar_t *m_wcs;
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
#endif // wxUSE_WCHAR_T
|
||||||
|
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
#define wxMB2WXbuf wxWCharBuffer
|
#define wxMB2WXbuf wxWCharBuffer
|
||||||
@@ -129,8 +129,6 @@ private:
|
|||||||
#define wxWX2WCbuf wxWCharBuffer
|
#define wxWX2WCbuf wxWCharBuffer
|
||||||
#endif // Unicode/ANSI
|
#endif // Unicode/ANSI
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// A class for holding growable data buffers (not necessarily strings)
|
// A class for holding growable data buffers (not necessarily strings)
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -139,13 +137,9 @@ class wxMemoryBuffer
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum { BLOCK_SIZE = 1024 };
|
enum { BLOCK_SIZE = 1024 };
|
||||||
wxMemoryBuffer(size_t size=wxMemoryBuffer::BLOCK_SIZE)
|
wxMemoryBuffer(size_t size = wxMemoryBuffer::BLOCK_SIZE)
|
||||||
: m_data(NULL), m_size(0), m_len(0)
|
: m_data(malloc(size)), m_size(size), m_len(0)
|
||||||
{
|
{
|
||||||
wxASSERT(size > 0);
|
|
||||||
m_data = malloc(size);
|
|
||||||
wxASSERT(m_data != NULL);
|
|
||||||
m_size = size;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
~wxMemoryBuffer() { free(m_data); }
|
~wxMemoryBuffer() { free(m_data); }
|
||||||
@@ -209,7 +203,7 @@ public:
|
|||||||
m_data = src.m_data;
|
m_data = src.m_data;
|
||||||
m_size = src.m_size;
|
m_size = src.m_size;
|
||||||
m_len = src.m_len;
|
m_len = src.m_len;
|
||||||
|
|
||||||
// no reference count yet...
|
// no reference count yet...
|
||||||
((wxMemoryBuffer*)&src)->m_data = NULL;
|
((wxMemoryBuffer*)&src)->m_data = NULL;
|
||||||
((wxMemoryBuffer*)&src)->m_size = 0;
|
((wxMemoryBuffer*)&src)->m_size = 0;
|
||||||
@@ -220,7 +214,6 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
void ResizeIfNeeded(size_t newSize)
|
void ResizeIfNeeded(size_t newSize)
|
||||||
{
|
{
|
||||||
if (newSize > m_size)
|
if (newSize > m_size)
|
||||||
@@ -237,8 +230,6 @@ private:
|
|||||||
size_t m_len;
|
size_t m_len;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// template class for any kind of data
|
// template class for any kind of data
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user