Skip to content

Commit db85815

Browse files
committed
Implemented memory pool realloc function
1 parent e74a676 commit db85815

File tree

4 files changed

+34
-24
lines changed

4 files changed

+34
-24
lines changed

build.sh

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@ TOOLS_DONE=0
1515
CPU_COUNT=1
1616

1717
for arg in "$@"; do
18-
if [[ $arg == --tool=* ]]; then
18+
if [[ $arg == --tool=* || $arg == -m=* ]]; then
1919
MAKE_TOOL="${arg#*=}"
2020
echo "Using tool: $MAKE_TOOL"
2121
fi
2222

23-
if [[ $arg == --prefix=* ]]; then
23+
if [[ $arg == --prefix=* || $arg == -p=* ]]; then
2424
INSTALL_PREFIX="${arg#*=}"
2525
echo "Using prefix: $INSTALL_PREFIX"
2626
fi
2727

28-
if [[ $arg == --ssl=* ]]; then
28+
if [[ $arg == --ssl=* || $arg == -s=* ]]; then
2929
USE_SSL="${arg#*=}"
3030
echo "Using SSL: $USE_SSL"
3131
fi
@@ -171,24 +171,23 @@ clean_project
171171
build_library
172172

173173
for arg in "$@"; do
174-
if [[ $arg == "--examples" ]]; then
174+
if [[ $arg == "--examples" || $arg == "-e" ]]; then
175175
build_examples
176176
fi
177177

178-
if [[ $arg == "--tools" ]]; then
178+
if [[ $arg == "--tools" || $arg == "-t" ]]; then
179179
build_tools
180180
fi
181181

182-
if [[ $arg == "--install" ]]; then
182+
if [[ $arg == "--install" || $arg == "-i" ]]; then
183183
install_library
184184
install_tools
185185
fi
186186
done
187187

188188
# Do cleanup last
189189
for arg in "$@"; do
190-
if [[ $arg == "--cleanup" ||
191-
$arg == "--clean" ]]; then
190+
if [[ $$arg == "--clean" || $arg == "-c" ]]; then
192191
clean_project
193192
fi
194193
done

misc/generate.sh

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,6 @@ enable_crc32() {
8282
USE_CRC32=y
8383
}
8484

85-
enable_array() {
86-
USE_ARRAY=y
87-
}
88-
8985
enable_list() {
9086
USE_LIST=y
9187
}
@@ -106,6 +102,11 @@ enable_xsig() {
106102
USE_XSIG=y
107103
}
108104

105+
enable_array() {
106+
USE_ARRAY=y
107+
enable_pool
108+
}
109+
109110
enable_md5() {
110111
USE_MD5=y
111112
enable_xstr
@@ -134,6 +135,7 @@ enable_xbuf() {
134135
enable_xstr() {
135136
USE_XSTR=y
136137
enable_array
138+
enable_pool
137139
}
138140

139141
enable_thread() {
@@ -190,6 +192,7 @@ enable_addr() {
190192
enable_xjson() {
191193
USE_XJSON=y
192194
enable_map
195+
enable_pool
193196
enable_xstr
194197
enable_array
195198
}

src/sys/pool.c

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,24 @@ void *XPool_Alloc(xpool_t *pPool, size_t nSize)
9595
return pRet;
9696
}
9797

98+
void *XPool_Realloc(xpool_t *pPool, void *pData, size_t nDataSize, size_t nNewSize)
99+
{
100+
XASSERT_RET(nNewSize, NULL);
101+
XASSERT_RET(pPool, NULL);
102+
103+
void *pNew = XPool_Alloc(pPool, nNewSize);
104+
if (pNew == NULL) return NULL;
105+
106+
if (pData != NULL && nDataSize)
107+
{
108+
size_t nCopySize = XSTD_MIN(nDataSize, nNewSize);
109+
memcpy(pNew, pData, nCopySize);
110+
XPool_Free(pPool, pData, nDataSize);
111+
}
112+
113+
return pNew;
114+
}
115+
98116
void XPool_Free(xpool_t *pPool, void *pData, size_t nSize)
99117
{
100118
XASSERT_VOID_RET(pData);
@@ -147,18 +165,7 @@ void* xrealloc(xpool_t *pPool, void *pData, size_t nDataSize, size_t nNewSize)
147165
{
148166
XASSERT_RET(nNewSize, NULL);
149167
if (!pPool) return realloc(pData, nNewSize);
150-
151-
void *pNew = XPool_Alloc(pPool, nNewSize);
152-
if (pNew == NULL) return NULL;
153-
154-
if (pData != NULL && nDataSize)
155-
{
156-
size_t nCopySize = XSTD_MIN(nDataSize, nNewSize);
157-
memcpy(pNew, pData, nCopySize);
158-
xfreen(pPool, pData, nDataSize);
159-
}
160-
161-
return pNew;
168+
return XPool_Realloc(pPool, pData, nDataSize, nNewSize);
162169
}
163170

164171
void xfree(xpool_t *pPool, void *pData)

src/sys/pool.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ void XPool_Destroy(xpool_t *pPool);
3939
void XPool_Reset(xpool_t *pPool);
4040

4141
void *XPool_Alloc(xpool_t *pPool, size_t nSize);
42+
void *XPool_Realloc(xpool_t *pPool, void *pData, size_t nDataSize, size_t nNewSize);
4243
void XPool_Free(xpool_t *pPool, void *pData, size_t nSize);
4344

4445
size_t XPool_GetSize(xpool_t *pPool);

0 commit comments

Comments
 (0)