diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 01967d09..56be9516 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -40,6 +40,10 @@ add_library( exiv2lib_int OBJECT unused.h ) +if (COMPILER_IS_GCC OR COMPILER_IS_CLANG) + set_source_files_properties(http.cpp PROPERTIES COMPILE_FLAGS -fno-sanitize=address,undefined) +endif() + add_library( exiv2lib ../include/exiv2/config.h ../include/exiv2/exiv2.hpp diff --git a/src/basicio.cpp b/src/basicio.cpp index b5ec43c8..12174616 100644 --- a/src/basicio.cpp +++ b/src/basicio.cpp @@ -1960,8 +1960,9 @@ namespace Exiv2 { for ( size_t block = 0 ; block < blocks ; block ++ ) { void* p = p_->blocksMap_[block].getData(); if ( p ) { - nRealData += blockSize ; - memcpy(bigBlock_+(block*blockSize),p,blockSize); + size_t nRead = block==(blocks-1)?p_->size_-nRealData:blockSize; + memcpy(bigBlock_+(block*blockSize),p,nRead); + nRealData += nRead ; } } #ifdef EXIV2_DEBUG_MESSAGES