summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/lzma/CPP/Common/MyBuffer.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/lzma/CPP/Common/MyBuffer.h')
-rw-r--r--3rdparty/lzma/CPP/Common/MyBuffer.h80
1 files changed, 61 insertions, 19 deletions
diff --git a/3rdparty/lzma/CPP/Common/MyBuffer.h b/3rdparty/lzma/CPP/Common/MyBuffer.h
index d0378057a95..bc829f4e09b 100644
--- a/3rdparty/lzma/CPP/Common/MyBuffer.h
+++ b/3rdparty/lzma/CPP/Common/MyBuffer.h
@@ -1,9 +1,15 @@
// Common/MyBuffer.h
-#ifndef __COMMON_MY_BUFFER_H
-#define __COMMON_MY_BUFFER_H
+#ifndef ZIP7_INC_COMMON_MY_BUFFER_H
+#define ZIP7_INC_COMMON_MY_BUFFER_H
+
+#include <string.h>
#include "Defs.h"
+#include "MyTypes.h"
+
+/* 7-Zip now uses CBuffer only as CByteBuffer.
+ So there is no need to use Z7_ARRAY_NEW macro in CBuffer code. */
template <class T> class CBuffer
{
@@ -16,16 +22,23 @@ public:
if (_items)
{
delete []_items;
- _items = 0;
+ _items = NULL;
}
_size = 0;
}
- CBuffer(): _items(0), _size(0) {};
- CBuffer(size_t size): _items(0), _size(0) { _items = new T[size]; _size = size; }
- CBuffer(const CBuffer &buffer): _items(0), _size(0)
+ CBuffer(): _items(NULL), _size(0) {}
+ CBuffer(size_t size): _items(NULL), _size(0)
{
- size_t size = buffer._size;
+ if (size != 0)
+ {
+ _items = new T[size];
+ _size = size;
+ }
+ }
+ CBuffer(const CBuffer &buffer): _items(NULL), _size(0)
+ {
+ const size_t size = buffer._size;
if (size != 0)
{
_items = new T[size];
@@ -88,6 +101,12 @@ public:
_size = newSize;
}
+ void Wipe()
+ {
+ if (_size != 0)
+ memset(_items, 0, _size * sizeof(T));
+ }
+
CBuffer& operator=(const CBuffer &buffer)
{
if (&buffer != this)
@@ -119,27 +138,45 @@ bool operator!=(const CBuffer<T>& b1, const CBuffer<T>& b2)
}
-typedef CBuffer<char> CCharBuffer;
+// typedef CBuffer<char> CCharBuffer;
// typedef CBuffer<wchar_t> CWCharBuffer;
typedef CBuffer<unsigned char> CByteBuffer;
+class CByteBuffer_Wipe: public CByteBuffer
+{
+ Z7_CLASS_NO_COPY(CByteBuffer_Wipe)
+public:
+ // CByteBuffer_Wipe(): CBuffer<unsigned char>() {}
+ CByteBuffer_Wipe(size_t size): CBuffer<unsigned char>(size) {}
+ ~CByteBuffer_Wipe() { Wipe(); }
+};
+
+
+
template <class T> class CObjArray
{
protected:
T *_items;
private:
- // we disable constructors
+ // we disable copy
CObjArray(const CObjArray &buffer);
void operator=(const CObjArray &buffer);
public:
void Free()
{
delete []_items;
- _items = 0;
+ _items = NULL;
+ }
+ CObjArray(size_t size): _items(NULL)
+ {
+ if (size != 0)
+ {
+ Z7_ARRAY_NEW(_items, T, size)
+ // _items = new T[size];
+ }
}
- CObjArray(size_t size): _items(0) { if (size != 0) _items = new T[size]; }
- CObjArray(): _items(0) {};
+ CObjArray(): _items(NULL) {}
~CObjArray() { delete []_items; }
operator T *() { return _items; }
@@ -148,8 +185,9 @@ public:
void Alloc(size_t newSize)
{
delete []_items;
- _items = 0;
- _items = new T[newSize];
+ _items = NULL;
+ Z7_ARRAY_NEW(_items, T, newSize)
+ // _items = new T[newSize];
}
};
@@ -164,6 +202,7 @@ template <class T> class CObjArray2
T *_items;
unsigned _size;
+ // we disable copy
CObjArray2(const CObjArray2 &buffer);
void operator=(const CObjArray2 &buffer);
public:
@@ -171,12 +210,12 @@ public:
void Free()
{
delete []_items;
- _items = 0;
+ _items = NULL;
_size = 0;
}
- CObjArray2(): _items(0), _size(0) {};
+ CObjArray2(): _items(NULL), _size(0) {}
/*
- CObjArray2(const CObjArray2 &buffer): _items(0), _size(0)
+ CObjArray2(const CObjArray2 &buffer): _items(NULL), _size(0)
{
size_t newSize = buffer._size;
if (newSize != 0)
@@ -191,7 +230,7 @@ public:
}
*/
/*
- CObjArray2(size_t size): _items(0), _size(0)
+ CObjArray2(size_t size): _items(NULL), _size(0)
{
if (size != 0)
{
@@ -216,7 +255,10 @@ public:
return;
T *newBuffer = NULL;
if (size != 0)
- newBuffer = new T[size];
+ {
+ Z7_ARRAY_NEW(newBuffer, T, size)
+ // newBuffer = new T[size];
+ }
delete []_items;
_items = newBuffer;
_size = size;