----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://git.reviewboard.kde.org/r/127770/#review94914 -----------------------------------------------------------
Very good find, thanks! src/sycoca/ksycocautils.cpp (line 27) <https://git.reviewboard.kde.org/r/127770/#comment64445> static ? But see next item. src/sycoca/ksycocautils.cpp (line 39) <https://git.reviewboard.kde.org/r/127770/#comment64446> Variable-length arrays are invalid C++. gcc might accept it, but -pedantic won't, and other compilers might not. See e.g. http://stackoverflow.com/questions/1887097/variable-length-arrays-in-c (which is about C++, the '+'s got removed from the URL) You can use an enum value to factorize the 8192. I think "static const int" won't do, if I read http://en.cppreference.com/w/cpp/language/array correctly. - David Faure On April 27, 2016, 8 p.m., Jos van den Oever wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://git.reviewboard.kde.org/r/127770/ > ----------------------------------------------------------- > > (Updated April 27, 2016, 8 p.m.) > > > Review request for KDE Frameworks and David Faure. > > > Repository: kservice > > > Description > ------- > > The code for reading and writing of strings in KSycoca is not symmetrical. > Strings of any length can be written, but only strings of less than 8192 > bytes may be read. This limit is set in KSycocaUtilsPrivate::read. The limit > is probably there to avoid out-of-memory situations. > > On my system I have a lot of XDG data dirs. The length of the environment > variable is currently 4092 bytes. KSycocaBuild saves that as UTF-16 which > needs 8184 bytes. KBuildSycoca save that without complaint but complains when > reading it. > > > The simplest solution here is to simply increase the magic number 8192 to > e.g. 65528. This is just a temporary buffer. > > Or we just check the size of the whole cache file (e.g. < 100M) and remove > all other limits. That would simplify > > KSycocaUtilsPrivate::read(*str, header.prefixes); > > to > > *str >> header.prefixes; > > This patch chooses the first option. > > > Diffs > ----- > > src/sycoca/ksycocautils.cpp 1ba75e8 > > Diff: https://git.reviewboard.kde.org/r/127770/diff/ > > > Testing > ------- > > Ran unit tests on KService. All but one of the previously failing tests on > NixOS is now fixed. > > > Thanks, > > Jos van den Oever > >
_______________________________________________ Kde-frameworks-devel mailing list Kde-frameworks-devel@kde.org https://mail.kde.org/mailman/listinfo/kde-frameworks-devel