Merge pull request #461 from negativeExponent/libchdr
[pcsx_rearmed.git] / deps / lzma-16.04 / C / 7zBuf2.c
CommitLineData
ce188d4d 1/* 7zBuf2.c -- Byte Buffer\r
22014-08-22 : Igor Pavlov : Public domain */\r
3\r
4#include "Precomp.h"\r
5\r
6#include <string.h>\r
7\r
8#include "7zBuf.h"\r
9\r
10void DynBuf_Construct(CDynBuf *p)\r
11{\r
12 p->data = 0;\r
13 p->size = 0;\r
14 p->pos = 0;\r
15}\r
16\r
17void DynBuf_SeekToBeg(CDynBuf *p)\r
18{\r
19 p->pos = 0;\r
20}\r
21\r
22int DynBuf_Write(CDynBuf *p, const Byte *buf, size_t size, ISzAlloc *alloc)\r
23{\r
24 if (size > p->size - p->pos)\r
25 {\r
26 size_t newSize = p->pos + size;\r
27 Byte *data;\r
28 newSize += newSize / 4;\r
29 data = (Byte *)alloc->Alloc(alloc, newSize);\r
30 if (data == 0)\r
31 return 0;\r
32 p->size = newSize;\r
33 memcpy(data, p->data, p->pos);\r
34 alloc->Free(alloc, p->data);\r
35 p->data = data;\r
36 }\r
37 if (size != 0)\r
38 {\r
39 memcpy(p->data + p->pos, buf, size);\r
40 p->pos += size;\r
41 }\r
42 return 1;\r
43}\r
44\r
45void DynBuf_Free(CDynBuf *p, ISzAlloc *alloc)\r
46{\r
47 alloc->Free(alloc, p->data);\r
48 p->data = 0;\r
49 p->size = 0;\r
50 p->pos = 0;\r
51}\r