133 tResult
Append(
const tVoid* pvData, tInt nDataSize)
135 RETURN_IF_POINTER_NULL(pvData);
139 RETURN_IF_FAILED(AdjustMemoryBlock(nDataSize));
145 else if (nDataSize < 0)
147 RETURN_ERROR(ERR_INVALID_ARG);
177 if (nNewIncrement < 0)
179 RETURN_ERROR(ERR_INVALID_ARG);
205 tResult AdjustMemoryBlock(tInt nBytesToAppend)
209 if (ui32FreeBytes <
static_cast<tUInt32
>(nBytesToAppend))
214 tUInt32 ui32OverlappingBytes = nBytesToAppend - ui32FreeBytes;
218 ui32IncrementsToApply++;
224 tResult nResult = ERR_NOERROR;
225 auto pNewMemBlock =
new adtf_util::cMemoryBlock();
226 RETURN_IF_POINTER_NULL(pNewMemBlock);
228 nResult = pNewMemBlock->Alloc(ui32NewSize);
229 if (IS_FAILED(nResult))
231 LOG_ERROR(
"Unable to allocate memory block!");
233 RETURN_ERROR(nResult);
237 nResult = pNewMemBlock->Zero();
238 if (IS_FAILED(nResult))
240 LOG_ERROR(
"Unable to set the new memory block to zero!");
242 RETURN_ERROR(nResult);