diff --git a/src/image.cpp b/src/image.cpp index bfe1e1a53b..d6bf3cd88f 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -874,7 +874,7 @@ void append(Blob& blob, const byte* buf, size_t len) { blob.reserve(size + 65536); } blob.resize(size + len); - std::memcpy(&blob[size], buf, len); + std::copy_n(buf, len, &blob[size]); } } // append diff --git a/src/jp2image.cpp b/src/jp2image.cpp index f878ab6a27..274e8ec60d 100644 --- a/src/jp2image.cpp +++ b/src/jp2image.cpp @@ -598,7 +598,7 @@ void Jp2Image::encodeJp2Header(const DataBuf& boxBuf, DataBuf& outBuf) { while (count < length && !bWroteColor) { Internal::enforce(boxHSize <= length - count, ErrorCode::kerCorruptedMetadata); Internal::Jp2BoxHeader subBox; - memcpy(&subBox, boxBuf.c_data(count), boxHSize); + std::copy_n(reinterpret_cast(boxBuf.c_data(count)), boxHSize, &subBox); Internal::Jp2BoxHeader newBox = subBox; if (count < length) { diff --git a/src/jpgimage.cpp b/src/jpgimage.cpp index fc58b86d27..82e1e9733b 100644 --- a/src/jpgimage.cpp +++ b/src/jpgimage.cpp @@ -732,7 +732,7 @@ void JpegBase::doWriteMetadata(BasicIo& outIo) { if (exifSize > 0xffff - 8) throw Error(ErrorCode::kerTooLargeJpegSegment, "Exif"); us2Data(tmpBuf.data() + 2, static_cast(exifSize + 8), bigEndian); - std::memcpy(tmpBuf.data() + 4, exifId_, 6); + std::copy_n(exifId_, 6, tmpBuf.data() + 4); if (outIo.write(tmpBuf.data(), 10) != 10) throw Error(ErrorCode::kerImageWriteFailed); @@ -759,7 +759,7 @@ void JpegBase::doWriteMetadata(BasicIo& outIo) { if (xmpPacket_.size() > 0xffff - 31) throw Error(ErrorCode::kerTooLargeJpegSegment, "XMP"); us2Data(tmpBuf.data() + 2, static_cast(xmpPacket_.size() + 31), bigEndian); - std::memcpy(tmpBuf.data() + 4, xmpId_, 29); + std::copy_n(xmpId_, 29, tmpBuf.data() + 4); if (outIo.write(tmpBuf.data(), 33) != 33) throw Error(ErrorCode::kerImageWriteFailed); @@ -835,7 +835,7 @@ void JpegBase::doWriteMetadata(BasicIo& outIo) { tmpBuf[0] = 0xff; tmpBuf[1] = app13_; us2Data(tmpBuf.data() + 2, static_cast(chunkSize + 16), bigEndian); - std::memcpy(tmpBuf.data() + 4, Photoshop::ps3Id_, 14); + std::copy_n(Photoshop::ps3Id_, 14, tmpBuf.data() + 4); if (outIo.write(tmpBuf.data(), 18) != 18) throw Error(ErrorCode::kerImageWriteFailed); if (outIo.error()) diff --git a/src/pngimage.cpp b/src/pngimage.cpp index 3d62373e39..a78839e883 100644 --- a/src/pngimage.cpp +++ b/src/pngimage.cpp @@ -534,7 +534,7 @@ void PngImage::doWriteMetadata(BasicIo& outIo) { throw Error(ErrorCode::kerInputDataReadFailed); char szChunk[5]; - memcpy(szChunk, cheaderBuf.c_data(4), 4); + std::copy_n(cheaderBuf.c_data(4), 4, szChunk); szChunk[4] = 0; if (!strcmp(szChunk, "IEND")) { diff --git a/src/tiffcomposite_int.cpp b/src/tiffcomposite_int.cpp index c33be9a06a..b2eb6b8715 100644 --- a/src/tiffcomposite_int.cpp +++ b/src/tiffcomposite_int.cpp @@ -386,7 +386,7 @@ bool TiffBinaryArray::updOrigDataBuf(const byte* pData, size_t size) { return false; if (origData_ == pData) return true; - memcpy(origData_, pData, origSize_); + std::copy_n(pData, origSize_, origData_); return true; } diff --git a/src/tiffvisitor_int.cpp b/src/tiffvisitor_int.cpp index 1850194a8a..6d9bd9270b 100644 --- a/src/tiffvisitor_int.cpp +++ b/src/tiffvisitor_int.cpp @@ -780,7 +780,7 @@ void TiffEncoder::encodeDataEntry(TiffDataEntry* object, const Exifdatum* datum) #endif DataBuf buf = object->pValue()->dataArea(); if (!buf.empty()) { - memcpy(object->pDataArea_, buf.c_data(), buf.size()); + std::copy_n(buf.c_data(), buf.size(), object->pDataArea_); if (object->sizeDataArea_ > buf.size()) { memset(object->pDataArea_ + buf.size(), 0x0, object->sizeDataArea_ - buf.size()); } diff --git a/src/value.cpp b/src/value.cpp index 24f2786e44..c3049aed0c 100644 --- a/src/value.cpp +++ b/src/value.cpp @@ -801,7 +801,7 @@ size_t DateValue::copy(byte* buf, ByteOrder /*byteOrder*/) const { // sprintf wants to add the null terminator, so use oversized buffer char temp[9]; auto wrote = static_cast(snprintf(temp, sizeof(temp), "%04d%02d%02d", date_.year, date_.month, date_.day)); - std::memcpy(buf, temp, wrote); + std::copy_n(temp, wrote, buf); return wrote; } @@ -929,7 +929,7 @@ size_t TimeValue::copy(byte* buf, ByteOrder /*byteOrder*/) const { plusMinus, abs(time_.tzHour), abs(time_.tzMinute))); Internal::enforce(wrote == 11, Exiv2::ErrorCode::kerUnsupportedTimeFormat); - std::memcpy(buf, temp, wrote); + std::copy_n(temp, wrote, buf); return wrote; }