MCPcopy Create free account
hub / github.com/BinomialLLC/basis_universal / alloc

Method alloc

encoder/jpgd.cpp:626–656  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

624 }
625
626 void* jpeg_decoder::alloc(size_t nSize, bool zero)
627 {
628 nSize = (JPGD_MAX(nSize, 1) + 3) & ~3;
629 char* rv = nullptr;
630 for (mem_block* b = m_pMem_blocks; b; b = b->m_pNext)
631 {
632 if ((b->m_used_count + nSize) <= b->m_size)
633 {
634 rv = b->m_data + b->m_used_count;
635 b->m_used_count += nSize;
636 break;
637 }
638 }
639 if (!rv)
640 {
641 int capacity = JPGD_MAX(32768 - 256, ((int)nSize + 2047) & ~2047);
642 mem_block* b = (mem_block*)jpgd_malloc(sizeof(mem_block) + capacity);
643 if (!b)
644 {
645 stop_decoding(JPGD_NOTENOUGHMEM);
646 }
647
648 b->m_pNext = m_pMem_blocks;
649 m_pMem_blocks = b;
650 b->m_used_count = nSize;
651 b->m_size = capacity;
652 rv = b->m_data;
653 }
654 if (zero) memset(rv, 0, nSize);
655 return rv;
656 }
657
658 void jpeg_decoder::word_clear(void* p, uint16 c, uint n)
659 {

Callers

nothing calls this directly

Calls 1

jpgd_mallocFunction · 0.85

Tested by

no test coverage detected