diff --git a/src/image.cpp b/src/image.cpp index 5d11a03b..5481732c 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -356,7 +356,7 @@ namespace Exiv2 { { std::string result; - int need = fmt.size()*4; // initial guess + int need = (int) fmt.size()*4; // initial guess char* buffer = new char[need]; // allocate a buffer va_list ap; // variable arg list @@ -366,6 +366,7 @@ namespace Exiv2 { if (need < 0) { // make buffer bigger delete[] buffer; + need = -need ; buffer = new char[need+2]; va_start(ap, fmt); need=vsnprintf(buffer, need, fmt.c_str(), ap); diff --git a/src/tiffimage.cpp b/src/tiffimage.cpp index 4c353eac..4e457a02 100644 --- a/src/tiffimage.cpp +++ b/src/tiffimage.cpp @@ -484,8 +484,8 @@ namespace Exiv2 { : count > 5 ? 5 : count ; - size_t pad = isStringType(type) ? 1 : 0; - size_t size = isStringType(type) ? 1 + uint32_t pad = isStringType(type) ? 1 : 0; + uint32_t size = isStringType(type) ? 1 : is2ByteType(type) ? 2 : is4ByteType(type) ? 4 : 1