summaryrefslogtreecommitdiff
path: root/src/Main.cxx
AgeCommit message (Collapse)Author
2019-02-20Main: create Database on stack, move to Instance after Open() succeededMax Kellermann
This fixes use-after-free bug in SimpleDatabase::Close(), accessing the `root` object which was already freed by the `catch` block in Open(). By having the Database on the stack first, we can avoid calling Close() on the failed-to-open Database from Instance's destructor. Closes #482
2019-02-20Instance: use std::unique_ptr<> to manage the Database pointerMax Kellermann
2019-02-20db/Plugin: use std::unique_ptr<> to manage Database pointersMax Kellermann
2019-02-15Instance: eliminate FinishShutdownUpdate(), move code to destructorMax Kellermann
2019-02-15Instance: eliminate ShutdownDatabase(), move code to destructorMax Kellermann
Destruct automatically, even if leaving the scope due to exception being thrown.
2019-02-05playlist/Registry: add RAII classMax Kellermann
2019-02-05Main: use AtScopeExit() to call DeinitFS()Max Kellermann
2019-02-05Mapper: remove empty function mapper_finish()Max Kellermann
2019-02-05Instance: remove FinishShutdownPartitions()Max Kellermann
The list of partitions is cleared automatically.
2019-02-05command/AllCommands: remove empty function command_finish()Max Kellermann
2019-02-05decoder/List: add RAII classMax Kellermann
2019-02-05input/Init: add RAII classMax Kellermann
2019-02-05Main: stop io_thread and rtio_thread automaticallyMax Kellermann
They will be stopped by ~EventThread() when the `Instance` is deleted.
2019-02-05archive/List: add RAII classMax Kellermann
2019-02-05unix/SignalHandlers: add RAII classMax Kellermann
2018-11-19Main: use DatabasePlugin::RequireStorage()Max Kellermann
2018-11-19db/Interface: remove IsPlugin(), use `dynamic_cast` insteadMax Kellermann
2018-10-31*: copyright year 2018Max Kellermann
2018-09-23player/Control: start thread on demandMax Kellermann
Keep MPD's footprint small until playback is requested.
2018-09-23player/Thread: remove obsolete `buffered_before_play` attributeMax Kellermann
2018-09-21player/Thread: move StartPlayerThread() into PlayerControlMax Kellermann
2018-08-20Merge branch 'v0.20.x'Max Kellermann
2018-08-19android: add LogListenerThomas Guillem
A Java object to send logs on the android side.
2018-08-19db/update/Service: Enqueue() throws on errorMax Kellermann
2018-08-19Main: throw exception instead of calling FatalError()Max Kellermann
2018-08-19Main: allocate ConfigData on the stackMax Kellermann
2018-08-19config/Global: move config_global_check() to Check.cxxMax Kellermann
2018-08-19config/Path: add InitPathParser()Max Kellermann
Eliminate yet another access to the global ConfigData instance.
2018-08-09decoder/Thread, ...: log all exceptionsMax Kellermann
2018-08-06Main: use AtScopeExit() to delete the InstanceMax Kellermann
2018-08-06Main: call daemonize_finish() with AtScopeExit()Max Kellermann
2018-08-02lib/icu/Init: add class ScopeIcuInitMax Kellermann
2018-08-01Main: add "noexcept"Max Kellermann
2018-08-01Main: remove exception handler from mpd_main_after_fork()Max Kellermann
Let MainOrThrow() forward it to mpd_main().
2018-08-01Main: move log_deinit() call to mpd_main()Max Kellermann
Deinitialize the logging library after the last exception handler, because that one could still need it. Use `AtScopeExit()` to ensure it's always called, even if an exception was thrown.
2018-08-01Main: move code to MainOrThrow(), leaving exception handler in mpd_main()Max Kellermann
2018-08-01Main: move libdbus cleanup to class ODBus::ScopeInitMax Kellermann
2018-07-17StateFile: add struct StateFileConfigMax Kellermann
2018-07-17output/MultipleOutputs: use struct ConfigDataMax Kellermann
2018-07-17neighbor/Glue: use struct ConfigDataMax Kellermann
2018-07-17fs/Config: use struct ConfigDataMax Kellermann
2018-07-17client/Global: use struct ConfigDataMax Kellermann
2018-07-17db/Configured: use struct ConfigDataMax Kellermann
2018-07-17pcm/ConfiguredResampler: use struct ConfigDataMax Kellermann
2018-07-17Listen: use struct ConfigDataMax Kellermann
2018-07-17LogInit: use struct ConfigDataMax Kellermann
2018-07-17Permission: use struct ConfigDataMax Kellermann
2018-07-17storage/Configured: use struct ConfigDataMax Kellermann
2018-07-17Main: use struct ConfigDataMax Kellermann
2018-07-17config/Data: move std::chrono parsers from Global.hxxMax Kellermann