wsd/ClientSession.cpp | 8 ++++---- wsd/TileCache.cpp | 13 +++++++------ wsd/TileCache.hpp | 5 ++++- 3 files changed, 15 insertions(+), 11 deletions(-)
New commits: commit a6f02a86ec776646cd6100418d4a939673ca8921 Author: Jan Holesovsky <ke...@collabora.com> Date: Tue Jan 17 16:42:31 2017 +0100 Fix error handling in reading of the cached values. Change-Id: I9f56f09786feb11326707d19cc0367a027ebefff Reviewed-on: https://gerrit.libreoffice.org/35573 Reviewed-by: Jan Holesovsky <ke...@collabora.com> Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> Tested-by: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp index 93609cbf..fdee40f9 100644 --- a/wsd/ClientSession.cpp +++ b/wsd/ClientSession.cpp @@ -293,8 +293,8 @@ bool ClientSession::getCommandValues(const char *buffer, int length, StringToken return sendTextFrame("error: cmd=commandvalues kind=syntax"); } - const std::string cmdValues = docBroker->tileCache().getTextFile("cmdValues" + command + ".txt"); - if (cmdValues.size() > 0) + std::string cmdValues; + if (docBroker->tileCache().getTextFile("cmdValues" + command + ".txt", cmdValues)) { return sendTextFrame(cmdValues); } @@ -305,8 +305,8 @@ bool ClientSession::getCommandValues(const char *buffer, int length, StringToken bool ClientSession::getPartPageRectangles(const char *buffer, int length, const std::shared_ptr<DocumentBroker>& docBroker) { - const std::string partPageRectangles = docBroker->tileCache().getTextFile("partpagerectangles.txt"); - if (partPageRectangles.size() > 0) + std::string partPageRectangles; + if (docBroker->tileCache().getTextFile("partpagerectangles.txt", partPageRectangles)) { return sendTextFrame(partPageRectangles); } diff --git a/wsd/TileCache.cpp b/wsd/TileCache.cpp index 0ce257ff..69371490 100644 --- a/wsd/TileCache.cpp +++ b/wsd/TileCache.cpp @@ -56,9 +56,10 @@ TileCache::TileCache(const std::string& docURL, << "] modifiedTime=" << (modifiedTime.raw()/1000000) << " getLastModified()=" << (getLastModified().raw()/1000000) << Log::end; File directory(_cacheDir); + std::string unsaved; if (directory.exists() && (getLastModified() < modifiedTime || - getTextFile("unsaved.txt") != "")) + getTextFile("unsaved.txt", unsaved))) { // Document changed externally or modifications were not saved after all. Cache not useful. FileUtil::removeFile(_cacheDir, true); @@ -233,7 +234,7 @@ void TileCache::saveTileAndNotify(const TileDesc& tile, const char *data, const } } -std::string TileCache::getTextFile(const std::string& fileName) +bool TileCache::getTextFile(const std::string& fileName, std::string& content) { const std::string fullFileName = _cacheDir + "/" + fileName; @@ -241,7 +242,7 @@ std::string TileCache::getTextFile(const std::string& fileName) if (!textStream.is_open()) { Log::info("Could not open " + fullFileName); - return ""; + return false; } std::vector<char> buffer; @@ -255,10 +256,10 @@ std::string TileCache::getTextFile(const std::string& fileName) if (buffer.size() > 0 && buffer.back() == '\n') buffer.pop_back(); - std::string result = std::string(buffer.data(), buffer.size()); - Log::info("Read '" + LOOLProtocol::getAbbreviatedMessage(result.c_str(), result.size()) + "' from " + fullFileName); + content = std::string(buffer.data(), buffer.size()); + Log::info("Read '" + LOOLProtocol::getAbbreviatedMessage(content.c_str(), content.size()) + "' from " + fullFileName); - return result; + return true; } void TileCache::saveTextFile(const std::string& text, const std::string& fileName) diff --git a/wsd/TileCache.hpp b/wsd/TileCache.hpp index b9b2f60e..3573fde2 100644 --- a/wsd/TileCache.hpp +++ b/wsd/TileCache.hpp @@ -49,7 +49,10 @@ public: void saveTileAndNotify(const TileDesc& tile, const char* data, const size_t size); - std::string getTextFile(const std::string& fileName); + /// Get the content of a cache file. + /// @param content Valid only when the call returns true. + /// @return true when the file actually exists + bool getTextFile(const std::string& fileName, std::string& content); // Save some text into a file in the cache directory void saveTextFile(const std::string& text, const std::string& fileName); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits