Fix conformity bug in _splice.
This commit is contained in:
1 parent
8b2993c979
commit
dcfbe53713
1 file changed
+12
-10
@@ -826,18 +826,20 @@
|
|||||||
{ \
|
{ \
|
||||||
ARRAYI_CONTRACT(a1); \
|
ARRAYI_CONTRACT(a1); \
|
||||||
ARRAYI_CONTRACT(a2); \
|
ARRAYI_CONTRACT(a2); \
|
||||||
size_t newSize = a1->size + a2->size; \
|
if (M_LIKELY (a2->size > 0)) { \
|
||||||
if (newSize > a1->alloc) { \
|
size_t newSize = a1->size + a2->size; \
|
||||||
type *ptr = M_GET_REALLOC oplist (type, a1->ptr, newSize); \
|
if (newSize > a1->alloc) { \
|
||||||
if (M_UNLIKELY (ptr == NULL) ) { \
|
type *ptr = M_GET_REALLOC oplist (type, a1->ptr, newSize); \
|
||||||
M_MEMORY_FULL(sizeof (type) * newSize); \
|
if (M_UNLIKELY (ptr == NULL) ) { \
|
||||||
|
M_MEMORY_FULL(sizeof (type) * newSize); \
|
||||||
|
} \
|
||||||
|
a1->ptr = ptr; \
|
||||||
|
a1->alloc = newSize; \
|
||||||
} \
|
} \
|
||||||
a1->ptr = ptr; \
|
memcpy(&a1->ptr[a1->size], &a2->ptr[0], a2->size * sizeof (type)); \
|
||||||
a1->alloc = newSize; \
|
a2->size = 0; \
|
||||||
|
a1->size = newSize; \
|
||||||
} \
|
} \
|
||||||
memcpy(&a1->ptr[a1->size], &a2->ptr[0], a2->size * sizeof (type)); \
|
|
||||||
a2->size = 0; \
|
|
||||||
a1->size = newSize; \
|
|
||||||
} \
|
} \
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
Reference in new issue
Block a user