| 5522 | } |
| 5523 | |
| 5524 | static size_t mz_zip_heap_write_func(void *pOpaque, mz_uint64 file_ofs, |
| 5525 | const void *pBuf, size_t n) { |
| 5526 | mz_zip_archive *pZip = (mz_zip_archive *)pOpaque; |
| 5527 | mz_zip_internal_state *pState = pZip->m_pState; |
| 5528 | mz_uint64 new_size = MZ_MAX(file_ofs + n, pState->m_mem_size); |
| 5529 | #ifdef _MSC_VER |
| 5530 | if ((!n) || |
| 5531 | ((0, sizeof(size_t) == sizeof(mz_uint32)) && (new_size > 0x7FFFFFFF))) |
| 5532 | #else |
| 5533 | if ((!n) || |
| 5534 | ((sizeof(size_t) == sizeof(mz_uint32)) && (new_size > 0x7FFFFFFF))) |
| 5535 | #endif |
| 5536 | return 0; |
| 5537 | if (new_size > pState->m_mem_capacity) { |
| 5538 | void *pNew_block; |
| 5539 | size_t new_capacity = MZ_MAX(64, pState->m_mem_capacity); |
| 5540 | while (new_capacity < new_size) |
| 5541 | new_capacity *= 2; |
| 5542 | if (NULL == (pNew_block = pZip->m_pRealloc( |
| 5543 | pZip->m_pAlloc_opaque, pState->m_pMem, 1, new_capacity))) |
| 5544 | return 0; |
| 5545 | pState->m_pMem = pNew_block; |
| 5546 | pState->m_mem_capacity = new_capacity; |
| 5547 | } |
| 5548 | memcpy((mz_uint8 *)pState->m_pMem + file_ofs, pBuf, n); |
| 5549 | pState->m_mem_size = (size_t)new_size; |
| 5550 | return n; |
| 5551 | } |
| 5552 | |
| 5553 | mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, |
| 5554 | size_t size_to_reserve_at_beginning, |
nothing calls this directly
no outgoing calls
no test coverage detected