// Copyright 2019 Joe Drago. All rights reserved. // SPDX-License-Identifier: BSD-2-Clause #include "avif/internal.h" #include avifResult avifRWDataRealloc(avifRWData * raw, size_t newSize) { if (raw->size != newSize) { uint8_t * newData = avifAlloc(newSize); AVIF_CHECKERR(newData, AVIF_RESULT_OUT_OF_MEMORY); if (raw->size && newSize) { memcpy(newData, raw->data, AVIF_MIN(raw->size, newSize)); } avifFree(raw->data); raw->data = newData; raw->size = newSize; } return AVIF_RESULT_OK; } avifResult avifRWDataSet(avifRWData * raw, const uint8_t * data, size_t len) { if (len) { AVIF_CHECKRES(avifRWDataRealloc(raw, len)); memcpy(raw->data, data, len); } else { avifRWDataFree(raw); } return AVIF_RESULT_OK; } void avifRWDataFree(avifRWData * raw) { avifFree(raw->data); raw->data = NULL; raw->size = 0; }