diff options
| -rw-r--r-- | autotests/kconfigtest.cpp | 7 | ||||
| -rw-r--r-- | src/core/kconfigini.cpp | 6 | 
2 files changed, 12 insertions, 1 deletions
| diff --git a/autotests/kconfigtest.cpp b/autotests/kconfigtest.cpp index 4ae6d5b8..35075d1a 100644 --- a/autotests/kconfigtest.cpp +++ b/autotests/kconfigtest.cpp @@ -521,7 +521,9 @@ void KConfigTest::testPath()              << "withBraces[$e]=file://${HOME}/foo" << endl              << "URL[$e]=file://${HOME}/foo" << endl              << "hostname[$e]=$(hostname)" << endl -            << "noeol=foo"; // no EOL +            << "escapes=aaa,bb/b,ccc\\,ccc" << endl +            << "noeol=foo" // no EOL +            ;      }      KConfig cf2(TEST_SUBDIR "pathtest");      KConfigGroup group = cf2.group("Test Group"); @@ -547,6 +549,9 @@ void KConfigTest::testPath()  #endif      QVERIFY(group.hasKey("noeol"));      QCOMPARE(group.readEntry("noeol", QString()), QString("foo")); + +    const auto val = QStringList { QStringLiteral("aaa"), QStringLiteral("bb/b"), QStringLiteral("ccc,ccc")}; +    QCOMPARE(group.readPathEntry("escapes", QStringList()), val);  }  void KConfigTest::testPersistenceOfExpandFlagForPath() diff --git a/src/core/kconfigini.cpp b/src/core/kconfigini.cpp index 211b630e..c7b36efd 100644 --- a/src/core/kconfigini.cpp +++ b/src/core/kconfigini.cpp @@ -793,6 +793,12 @@ void KConfigIniBackend::printableToString(BufferFragment *aString, const QFile &                  r++;                  *r = ';';                  break; +            case ',': +                // not really an escape sequence, but allowed in .desktop files, don't strip '\,' from the string +                *r = '\\'; +                r++; +                *r = ','; +                break;              case 'x':                  if (i + 2 < l) {                      *r = charFromHex(str + i + 1, file, line); | 
