| 62 | } |
| 63 | |
| 64 | void* WelsMalloc (const uint32_t kuiSize, const char* kpTag, const uint32_t kiAlign) { |
| 65 | const uint32_t kiSizeOfVoidPointer = sizeof (void**); |
| 66 | const uint32_t kiSizeOfInt = sizeof (int32_t); |
| 67 | const uint32_t kiAlignedBytes = kiAlign - 1; |
| 68 | const uint32_t kiTrialRequestedSize = kuiSize + kiAlignedBytes + kiSizeOfVoidPointer + kiSizeOfInt; |
| 69 | const uint32_t kiActualRequestedSize = kiTrialRequestedSize; |
| 70 | const uint32_t kiPayloadSize = kuiSize; |
| 71 | |
| 72 | uint8_t* pBuf = (uint8_t*) malloc (kiActualRequestedSize); |
| 73 | if (NULL == pBuf) |
| 74 | return NULL; |
| 75 | |
| 76 | #ifdef MEMORY_CHECK |
| 77 | if (fpMemChkPoint == NULL) { |
| 78 | fpMemChkPoint = fopen ("./enc_mem_check_point.txt", "at+"); |
| 79 | nCountRequestNum = 0; |
| 80 | } |
| 81 | |
| 82 | if (fpMemChkPoint != NULL) { |
| 83 | if (kpTag != NULL) |
| 84 | fprintf (fpMemChkPoint, "WelsMalloc(), 0x%x : actual uiSize:\t%d\tbytes, input uiSize: %d bytes, %d - %s\n", |
| 85 | (void*)pBuf, kiActualRequestedSize, kuiSize, nCountRequestNum++, kpTag); |
| 86 | else |
| 87 | fprintf (fpMemChkPoint, "WelsMalloc(), 0x%x : actual uiSize:\t%d\tbytes, input uiSize: %d bytes, %d \n", (void*)pBuf, |
| 88 | kiActualRequestedSize, kuiSize, nCountRequestNum++); |
| 89 | fflush (fpMemChkPoint); |
| 90 | } |
| 91 | #endif |
| 92 | uint8_t* pAlignedBuffer; |
| 93 | pAlignedBuffer = pBuf + kiAlignedBytes + kiSizeOfVoidPointer + kiSizeOfInt; |
| 94 | pAlignedBuffer -= ((uintptr_t) pAlignedBuffer & kiAlignedBytes); |
| 95 | * ((void**) (pAlignedBuffer - kiSizeOfVoidPointer)) = pBuf; |
| 96 | * ((int32_t*) (pAlignedBuffer - (kiSizeOfVoidPointer + kiSizeOfInt))) = kiPayloadSize; |
| 97 | |
| 98 | return pAlignedBuffer; |
| 99 | } |
| 100 | |
| 101 | void WelsFree (void* pPointer, const char* kpTag) { |
| 102 | if (pPointer) { |
no outgoing calls
no test coverage detected