shared lib: conversion-lib in Plasma
Aaron J. Seigo
aseigo at kde.org
Tue Jul 28 09:54:55 BST 2009
On Tuesday 28 July 2009, Petri Damstén wrote:
> Which I removed, since I can't see how it could work if Unit is KSharedPtr.
> Converter has UnitCategories which has Units. Category takes care of
> creating and deleting units. If Unit is deleted outside category (by
> KSharedPtr or otherwise) categories will fail. Values only have pointer to
> unit.
problem is that this is very brittle. it means new units can never be
dynamically added/removed safely, but more importantly if the units are to be
cleaned up at some point (which i think they do, as noted in the previous
email) then handing around the same naked pointer amongst various classes is
just asking for a dangling pointer to appear somewhere.
since UnitCategory keeps a reference to the Unit in its two maps[1], if they
were KSharedPtrs instead they'd stay in reference until the UnitCategory went
away. the UnitCategory would then be in clear ownership of the Unit objects
and control their life-span.
[1] btw, all the calls to keys() and values() in UnitCategory really ought to
be changed to something else; both of those calls iterate through the
collections and create a whole new collection. having a simple collection
(e.g. a List or a Set) of KSharedPtr<Unit> would prevent all the calls to
values, for instance.
--
Aaron J. Seigo
humru othro a kohnu se
GPG Fingerprint: 8B8B 2209 0C6F 7C47 B1EA EE75 D6B7 2EB1 A7F1 DB43
KDE core developer sponsored by Qt Software
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20090728/4d451cff/attachment.sig>
More information about the kde-core-devel
mailing list