----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://git.reviewboard.kde.org/r/103577/#review10136 -----------------------------------------------------------
This review has been submitted with commit dec29afc01df5129049f232b5a8aa5080315b4c7 by David Faure to branch KDE/4.8. - Commit Hook On Dec. 30, 2011, 2:44 a.m., Anssi Hannula wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > http://git.reviewboard.kde.org/r/103577/ > ----------------------------------------------------------- > > (Updated Dec. 30, 2011, 2:44 a.m.) > > > Review request for kdelibs. > > > Description > ------- > > KConfigIniBackend::isWritable() tries to handle cases where the config > file doesn't exist and one or more of the deepest directories don't > exist either, in which case 'true' is returned if the deepest directory > is writable. > > However, this fails because the code tries to use QDir::cdUp() to go > upwards until an existing directory is found. As per documentation, > cdUp() will fail when the parent directory doesn't exist, causing > isWritable() to bail out and return false without checking further > parent directories. > > This will cause e.g. KConfig::accessMode() to return ReadOnly if the > configuration directory structure doesn't exist yet, even if the KConfig > is actually writeable (the parent directories are automatically created > by KConfigIniBackend at writing time). This was observed at > https://bugs.mageia.org/show_bug.cgi?id=3601#c10 > > Fix that by walking through the tree using QFileInfo::absolutePath() > instead. > > > Diffs > ----- > > kdecore/config/kconfigini.cpp 5f7ba7c > > Diff: http://git.reviewboard.kde.org/r/103577/diff/diff > > > Testing > ------- > > Built kdelibs 4.7.95 with the patch, the error message in the referenced > Mageia bugreport comment (which is shown when accessMode() returns ReadOnly) > doesn't show up anymore when the ~/.kde4 directory tree doesn't exist. Also, > if I create an empty ~/.kde4 dir without any permissions, the accessMode() > call still returns ReadOnly as expected. > > > Thanks, > > Anssi Hannula > >