static getInstance returns *new
This is not (yet) a bug report, but a question:
Can someone explain the following pattern to me? Are those pointers ever freed? static T &getInstance()
sounds like a singleton getter, but it rather looks like a memory leak and a misnamed factory function?
git grep 'getInstance.*\*new '
src/ui/dialog/align-and-distribute.h: static AlignAndDistribute &getInstance() { return *new AlignAndDistribute(); }
src/ui/dialog/attrdialog.h: static AttrDialog &getInstance() { return *new AttrDialog(); }
src/ui/dialog/clonetiler.h: static CloneTiler &getInstance() { return *new CloneTiler(); }
src/ui/dialog/cssdialog.h: static CssDialog &getInstance() { return *new CssDialog(); }
src/ui/dialog/extension-editor.h: static ExtensionEditor &getInstance() { return *new ExtensionEditor(); }
src/ui/dialog/fill-and-stroke.h: static FillAndStroke &getInstance() { return *new FillAndStroke(); }
src/ui/dialog/find.h: static Find &getInstance() { return *new Find(); }
src/ui/dialog/font-substitution.h: static FontSubstitution &getInstance() { return *new FontSubstitution(); }
src/ui/dialog/inkscape-preferences.h: static InkscapePreferences &getInstance() { return *new InkscapePreferences(); }
src/ui/dialog/livepatheffect-editor.h: static LivePathEffectEditor &getInstance() { return *new LivePathEffectEditor(); }
src/ui/dialog/memory.h: static Memory &getInstance() { return *new Memory(); }
src/ui/dialog/messages.h: static Messages &getInstance() { return *new Messages(); }
src/ui/dialog/object-attributes.h: static ObjectAttributes &getInstance() { return *new ObjectAttributes(); }
src/ui/dialog/object-properties.h: static ObjectProperties &getInstance() { return *new ObjectProperties(); }
src/ui/dialog/prototype.h: static Prototype& getInstance() { return *new Prototype(); };
src/ui/dialog/spellcheck.h: static SpellCheck &getInstance() { return *new SpellCheck(); }
src/ui/dialog/styledialog.h: static StyleDialog &getInstance() { return *new StyleDialog(); }
src/ui/dialog/svg-fonts-dialog.h: static SvgFontsDialog &getInstance() { return *new SvgFontsDialog(); }
src/ui/dialog/text-edit.h: static TextEdit &getInstance() { return *new TextEdit(); }
src/ui/dialog/tile.h: static ArrangeDialog& getInstance() { return *new ArrangeDialog(); }
src/ui/dialog/xml-tree.h: static XmlTree &getInstance() { return *new XmlTree(); }