c
size_t safeAdd(size_t a, size_t b, int* overflow) {
    size_t result = a + b;
    *overflow = (result < a) || (result < b);
    return result;
}

size_t xOffset = nXDst * dstBytesPerPixel;
size_t yOffset = nYDst * nDstStep;
int overflow = 0;
size_t totalOffset = safeAdd(xOffset, yOffset, &overflow);

if (overflow) {
    // Handle overflow error
    return NULL;
}

const BYTE* pDstStart = &pDstData[totalOffset];
