]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/buffer.h
fixed typo in wxString::swap() which was completely broken
[wxWidgets.git] / include / wx / buffer.h
index 01b44c72b3ef878019d0b92d60b4f4fade19a923..dac2adf1bdc2a681970141424bd2ac85bfc61e00 100644 (file)
@@ -148,9 +148,9 @@ public:
     ~wxMemoryBuffer() { free(m_data); }
 
     // Accessors
-    void*  GetData()    { return m_data; }
-    size_t GetBufSize() { return m_size; }
-    size_t GetDataLen() { return m_len; }
+    void*  GetData() const    { return m_data; }
+    size_t GetBufSize() const { return m_size; }
+    size_t GetDataLen() const { return m_len; }
 
     void   SetBufSize(size_t size) { ResizeIfNeeded(size); }
     void   SetDataLen(size_t len)
@@ -179,7 +179,7 @@ public:
     // Other ways to append to the buffer
     void  AppendByte(char data) {
         ResizeIfNeeded(m_len + 1);
-        *((char*)m_data) = data;
+        *(((char*)m_data)+m_len) = data;
         m_len += 1;
     }
     void  AppendData(void* data, size_t len)
@@ -190,10 +190,36 @@ public:
 
     operator const char *() const { return (const char*)m_data; }
 
+
+    // Copy and assignment
+    wxMemoryBuffer(const wxMemoryBuffer& src)
+    {
+        m_data = src.m_data;
+        m_size = src.m_size;
+        m_len  = src.m_len;
+
+        // no reference count yet...
+        ((wxMemoryBuffer*)&src)->m_data = NULL;
+        ((wxMemoryBuffer*)&src)->m_size = 0;
+        ((wxMemoryBuffer*)&src)->m_len  = 0;
+    }
+
+    wxMemoryBuffer& operator=(const wxMemoryBuffer& src)
+    {
+        m_data = src.m_data;
+        m_size = src.m_size;
+        m_len  = src.m_len;
+
+        // no reference count yet...
+        ((wxMemoryBuffer*)&src)->m_data = NULL;
+        ((wxMemoryBuffer*)&src)->m_size = 0;
+        ((wxMemoryBuffer*)&src)->m_len  = 0;
+
+        return *this;
+   }
+
+
 protected:
-    // Don't allow copy or assignment
-    wxMemoryBuffer(const wxMemoryBuffer&) {}
-    wxMemoryBuffer& operator=(const wxCharBuffer& src) {}
 
     void ResizeIfNeeded(size_t newSize)
     {