summaryrefslogtreecommitdiff
path: root/cpp/src/IcePatch2Lib/ClientUtil.cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2016-10-11 16:16:32 +0200
committerJose <jose@zeroc.com>2016-10-11 16:16:32 +0200
commite659399c9fce6fc56006789120e3b90a9134574f (patch)
tree9a47a3da29acf5598ed853e1be0c7651dc0ff133 /cpp/src/IcePatch2Lib/ClientUtil.cpp
parentFixed ICE-7346 - removed lmdb dependency, set cppflags instead if necessary (diff)
parentFixed typo (diff)
downloadice-e659399c9fce6fc56006789120e3b90a9134574f.tar.bz2
ice-e659399c9fce6fc56006789120e3b90a9134574f.tar.xz
ice-e659399c9fce6fc56006789120e3b90a9134574f.zip
Merge remote-tracking branch 'origin/3.6'
Conflicts: README.md android/build.gradle android/gradle.properties android/gradle/wrapper/gradle-wrapper.properties config/Make.common.rules config/PropertyNames.xml cpp/BuildInstructionsLinux.md cpp/BuildInstructionsOSX.md cpp/BuildInstructionsWinRT.md cpp/BuildInstructionsWindows.md cpp/config/Make.rules cpp/config/Make.rules.mak cpp/include/IceUtil/Config.h cpp/include/Slice/PythonUtil.h cpp/include/Slice/RubyUtil.h cpp/include/Slice/Util.h cpp/src/Ice/DynamicLibrary.cpp cpp/src/Ice/PropertyNames.cpp cpp/src/Ice/PropertyNames.h cpp/src/Ice/winrt/StreamEndpointI.cpp cpp/src/IceGrid/IceGridDB.cpp cpp/src/IceGrid/Util.cpp cpp/src/IceUtil/FileUtil.cpp cpp/src/IceUtil/FileUtil.h cpp/src/Makefile cpp/src/Slice/Util.cpp cpp/src/slice2cs/Gen.cpp cpp/src/slice2freeze/Main.cpp cpp/src/slice2freezej/Main.cpp cpp/src/slice2html/Makefile cpp/src/slice2html/Makefile.mak cpp/src/slice2java/Main.cpp cpp/test/Ice/exceptions/AllTests.cpp cpp/test/Ice/facets/AllTests.cpp cpp/test/Ice/info/AllTests.cpp cpp/test/Ice/location/AllTests.cpp cpp/test/Ice/properties/run.py cpp/test/Ice/timeout/AllTests.cpp cpp/test/IceGrid/noRestartUpdate/AllTests.cpp cpp/test/IceStorm/stress/run.py cpp/test/TestSuite/10.0/Package.appxmanifest cpp/test/TestSuite/10.0/TestSuite.vcxproj cpp/test/TestSuite/10.0/TestSuite.vcxproj.filters cpp/test/TestSuite/10.0/TestSuite_TemporaryKey.pfx cpp/test/TestSuite/8.0/TestSuite.vcxproj cpp/test/TestSuite/8.0/TestSuite_TemporaryKey.pfx csharp/BuildInstructions.md csharp/src/Ice/PropertyNames.cs csharp/src/IceLocatorDiscovery/PluginI.cs java/BuildInstructions.md java/Makefile java/Makefile.mak java/src/Glacier2/src/main/java/Glacier2/Application.java java/src/Glacier2/src/main/java/Glacier2/SessionFactoryHelper.java java/src/Glacier2/src/main/java/Glacier2/SessionHelper.java java/src/Ice/src/main/java/Ice/Object.java java/src/Ice/src/main/java/Ice/ObjectImpl.java java/src/Ice/src/main/java/IceInternal/PropertyNames.java java/src/Ice/src/main/java/IceSSL/Plugin.java java/src/Ice/src/main/java/IceSSL/PluginFactory.java java/src/Ice/src/main/java/IceUtil/Cache.java java/src/IceGridGUI/build.gradle java/src/IceGridGUI/src/main/java/IceGridGUI/SimpleInternalFrame.java java/src/IceGridGUI/src/main/java/IceGridGUI/Utils.java java/test/build.gradle java/test/ejb/README.md js/src/Ice/PropertyNames.js js/src/Ice/browser/TimerUtil.js js/src/Ice/browser/WSTransceiver.js js/test/Common/TestCases.json js/test/Common/Worker.js objective-c/include/objc/Ice/Config.h objective-c/src/Ice/CommunicatorI.mm php/BuildInstructionsLinuxOSX.md php/BuildInstructionsWindows.md php/config/Make.rules.mak.php php/src/php7/IcePHP.rc python/BuildInstructionsLinuxOSX.md python/BuildInstructionsWindows.md python/Makefile python/modules/IcePy/Slice.cpp python/test/Slice/import/run.py ruby/BuildInstructionsLinuxOSX.md ruby/BuildInstructionsWindows.md ruby/config/Make.rules ruby/src/IceRuby/Slice.cpp scripts/TestController.py scripts/TestUtil.py slice/Ice/Communicator.ice slice/Ice/Instrumentation.ice slice/IceLocatorDiscovery/IceLocatorDiscovery.ice
Diffstat (limited to 'cpp/src/IcePatch2Lib/ClientUtil.cpp')
-rw-r--r--cpp/src/IcePatch2Lib/ClientUtil.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/cpp/src/IcePatch2Lib/ClientUtil.cpp b/cpp/src/IcePatch2Lib/ClientUtil.cpp
index 07c30450029..66d315f8a6b 100644
--- a/cpp/src/IcePatch2Lib/ClientUtil.cpp
+++ b/cpp/src/IcePatch2Lib/ClientUtil.cpp
@@ -863,8 +863,14 @@ PatcherI::updateFilesInternal(const LargeFileInfoSeq& files, const DecompressorP
throw ": cannot write `" + pathBZ2 + "':\n" + IceUtilInternal::lastErrorToString();
}
- pos += bytes.size();
- updated += bytes.size();
+ // 'bytes' is always returned with size '_chunkSize'. When a file is smaller than '_chunkSize'
+ // or we are reading the last chunk of a file, 'bytes' will be larger than necessary. In this
+ // case we calculate the current position and updated size based on the known file size.
+ size_t size = (pos + bytes.size()) > static_cast<size_t>(p->size) ?
+ static_cast<size_t>(p->size - pos) : bytes.size();
+
+ pos += size;
+ updated += size;
if(!_feedback->patchProgress(pos, p->size, updated, total))
{