Skip to content
Snippets Groups Projects
Commit 6f2ceb12 authored by Hugo Lefeuvre's avatar Hugo Lefeuvre Committed by Sébastien Blin
Browse files

Refactoring of the accountContainer logic


Before:

 - RingMainWindow has an unique_ptr to an AccountContainer
   accountContainer_.

 - each view / secondary class has its own *copy* of the account
   container pointer (given by ringmainwindow using
   accountContainer_.get()).

 - each time the reference to the struct Info is updated,
   accountContainer_ has to be reset()-ed and and the account
   container re-created by the RingMainWindow. This makes *all*
   copies of the account container pointer invalid (hence all
   view / secondary classes trying to access the account container
   before getting updated perform use-after-free / NULL pointer
   dereference).

 - These copies have to be manually updated ! (well, currently they
   are not updated at all)

After:

 - RingMainWindow has a pointer to a struct Info from LRC.

 - Each view / secondary class has a pointer pointing to
   the struct Info pointer of RingMainWindow

 - Each time the reference to the struct Info is updated, the
   RingMainWindow updates its pointer. Since secondary classes and
   views hold a pointer to this pointer, they are automatically
   updated and there is no dangling pointer anymore.

This requires no lrc side changes.

Change-Id: I1329721920a3d42ad623f9fd7202b43700713eed
Reviewed-by: default avatarSebastien Blin <sebastien.blin@savoirfairelinux.com>
Reviewed-by: default avatarGuillaume Roguez <guillaume.roguez@savoirfairelinux.com>
parent 03f071db
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment