> Another and easy approach would be if the class NetworkListWorker receive
> again a const DirItemInfo *parent, but sets m_parent as its own instance using
> the operator '=', in this case it never gets deleted outside the worker
> thread.
> 
> Suppose the code changed:
> 
> 
> NetworkListWorker::NetworkListWorker(LocationItemDirIterator * dirIterator,
>                                      DirItemInfo * mainItemInfo,
>                                      const DirItemInfo *parent) :
>     DirListWorker(dirIterator->path(),
>                   dirIterator->filters(),
>                   dirIterator->flags() == QDirIterator::Subdirectories ? true
> : false),
>     m_dirIterator(dirIterator),
>     m_mainItemInfo(mainItemInfo),
>     m_parent(0)
> {
>      if (parent != 0)
>      {
>         m_parent = new UrlItemInfo();  // UrlItemInfo is for remote
>         *m_parent = *parent;           // not sure it works, needs be reviewed
>      }
>      mLoaderType =  NetworkLoader;
> 
>      // this would not be necessary and can be removed
>      parent->connectDestructionSignal(this, SLOT(onParentDestroyed()));
> }
> 
> 
> NetworkListWorker::~NetworkListWorker()
> {
>     delete m_dirIterator;
>     delete m_mainItemInfo;
>     if (m_parent != 0)
>     {
>        delete  m_parent;
>     }
> }

With that code the operation will be executed even after the "parent" object be 
destroyed what we do not want. It is waste of resource. 

-- 
https://code.launchpad.net/~renatofilho/ubuntu-filemanager-app/fix-network-crash/+merge/314870
Your team Ubuntu File Manager Developers is subscribed to branch 
lp:ubuntu-filemanager-app.

-- 
Mailing list: https://launchpad.net/~ubuntu-touch-coreapps-reviewers
Post to     : ubuntu-touch-coreapps-reviewers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~ubuntu-touch-coreapps-reviewers
More help   : https://help.launchpad.net/ListHelp

Reply via email to