Developer forums (C::B DEVELOPMENT STRICTLY!) > Development
Migrating Pointer to std::shared_ptr in sdk
(1/1)
BlueHazzard:
Hi,
i would like to implement https://sourceforge.net/p/codeblocks/tickets/1255/ but i got a crash at closing the application, because of an invalid pointer.
The Problem is that a ProjectFile* is deleted but shared between different objects, and not cleared the right way. Even a comment in the code shows hints to the problem:
cbproject.cpp:1210
--- Code: ---// FIXME This call is rather strange. It advertises that it will close the files, but in fact it
// removes all files from the project, deallocates all ProjectFile instances and returns. This
// leaves the ProjectBuildTarget ProjectFile instances to be dangling. I don't undestand!!!
bool cbProject::CloseAllFiles(bool dontsave)
--- End code ---
In addition to the ProjectBuildTarget object, also the FileTreeData has a dangling ProjectFile*
This is probably a source of some crashes and bugs.
I think the "easiest" (but a LOT work) solution to fix this would be to use std::shared_ptr and std::weak_ptr.... But this would break a lot code....
One idea is to use internally shared pointer, and introduce some parallel api that returns the shared_ptr but let the old api alone...
Any ideas, suggestions?
Navigation
[0] Message Index
Go to full version