Re: KBabel project crashes
Stanislav Visnovsky <[email protected]> Tue, 31 Jan 2006 20:30:10 +0100
| Newsgroups | gmane.comp.kde.devel.kbabel |
|---|---|
| Message-ID | <[email protected]> |
Dňa Ne 29. Január 2006 19:44 Nicolas Goutte napísal: > In KDE Bugs, there are a few bug report about crashes closely related to > KBabel's projects. > > I think that I have finally found the main reason. The core of the problem > is that the class Project (defined in kdesdk/kbabel/common/kbproject.h) > inherits from KShared (defined in kdelibs/kdecore/ksharedptr.h). > > KShared-derived classes are supposed to be maily handled by the KSharedPtr > class (also defined in kdelibs/kdecore/ksharedptr.h), which handles the > reference counter of the KShared-dereived class. > > Unfortunately KBabel's ProjectManager class (defined in > kdesdk/kbabel/common/ kbprojectmanager.h) does not handle the Project class > with the care needed by a KShared-deried class. > > A KShared-class should be refered and derefered either implicetly by the > KSharePtr or by calling explicitely the needed functions in KShared. > > Unfortunately, ProjectManager::open creates a Project object with new and > assign it to a KSharedPtr and put that project pointer to QPtrList. However > at the end of the function the KSharedPtr is destructed too and the > reference count of the Project object is brought to zero and the project > object is deleted. So the QPtrList pointer is becoming dangling, main > reason of the crashes. > > * > > So now that I have found the problem, I do *not* have a solution, > especially a binary compatible one. I had tried something by explicitely > refering and derefering in ProjectManager but missed that we have no > derefering function. (ProjectManager::remove is not such a function.) > > So I am not sure what to do. May be you have an idea. > > Introducing a function in ProjectManager for dereferencing is perhaps a way > to go but I do not know how much code needs to be changed elsewhere (nor > its impact on potentially existing third party programs for KBabel, as the > Project and ProjectManager classes are supposed to be blubic, as their > header files are installed. I would not worry too much about publicity of the API. I've never heard of any use of KBabel core as a library. Stano _______________________________________________ kbabel mailing list [email protected] https://mail.kde.org/mailman/listinfo/kbabel