summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Weghorn <m.weghorn@posteo.de>2018-09-05 18:03:06 +0200
committerMichael Weghorn <m.weghorn@posteo.de>2018-09-06 09:19:26 +0200
commitdc27b9fc44d3fe081608765e1e84040eab8ded81 (patch)
treeffdeb2c05edca038b22d8f2b02441e8ff850dd82
parent38e59471c6c2c3d0685978b4880709d00a94c3fc (diff)
tdf#119685 Fix infinite loop in gtk3_kde5 filepicker
Since 'string::find()' returns the position of the given character in the string and that was passed as the amount of characters to delete from the string, 'm_responseBuffer' would always be a string starting with a newline character afterwards, when this part of the code was reached. Subsequent calls to 'Gtk3KDE5FilePickerIpc::readResponseLine' therefore always returned an empty string and left 'm_responseBuffer' unchanged, resulting in the lambda function inside 'readResponse' in 'gtk3_kde5_filepicker_ipc.hxx' to loop infinitely. While at it, make a little more explicit that 'it' is of type 'size_t' here. Change-Id: I3b1c209f8307ab71465d9538a82616dff8656415 Reviewed-on: https://gerrit.libreoffice.org/60047 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> (cherry picked from commit 1f5698ba8b62e62999b0efb363916a91bdd54c94)
-rw-r--r--vcl/unx/gtk3_kde5/gtk3_kde5_filepicker_ipc.cxx4
1 files changed, 2 insertions, 2 deletions
diff --git a/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker_ipc.cxx b/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker_ipc.cxx
index b2cfabe94ce1..34ebfa322f07 100644
--- a/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker_ipc.cxx
+++ b/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker_ipc.cxx
@@ -226,11 +226,11 @@ std::string Gtk3KDE5FilePickerIpc::readResponseLine()
{
if (!m_responseBuffer.empty()) // check whether we have a line in our buffer
{
- auto it = m_responseBuffer.find('\n');
+ std::size_t it = m_responseBuffer.find('\n');
if (it != std::string::npos)
{
auto ret = m_responseBuffer.substr(0, it);
- m_responseBuffer.erase(0, it);
+ m_responseBuffer.erase(0, it + 1);
return ret;
}
}