|
From: Kouhei S. <nul...@cl...> - 2014-02-27 03:17:53
|
Kouhei Sutou 2014-02-27 12:15:07 +0900 (Thu, 27 Feb 2014) New Revision: 9d919ad5161587888a9820b5521624f2fa052ccb https://github.com/clear-code/cutter/commit/9d919ad5161587888a9820b5521624f2fa052ccb Message: Fix double free of built factories list GitHub: fix #12 Reported by Kazuhiro Yamato. Thanks!!! Modified files: cutter/cut-contractor.c Modified: cutter/cut-contractor.c (+7 -3) =================================================================== --- cutter/cut-contractor.c 2014-02-10 16:22:32 +0900 (07efb71) +++ cutter/cut-contractor.c 2014-02-27 12:15:07 +0900 (8b411e1) @@ -171,7 +171,9 @@ cut_contractor_build_listener_factories (CutContractor *contractor) for (node = priv->listener_builders; node; node = g_list_next(node)) { CutFactoryBuilder *builder = CUT_FACTORY_BUILDER(node->data); - factories = g_list_concat(cut_factory_builder_build(builder), factories); + GList *built_factories; + built_factories = cut_factory_builder_build(builder); + factories = g_list_concat(g_list_copy(built_factories), factories); } return factories; } @@ -184,7 +186,9 @@ cut_contractor_build_all_listener_factories (CutContractor *contractor) for (node = priv->listener_builders; node; node = g_list_next(node)) { CutFactoryBuilder *builder = CUT_FACTORY_BUILDER(node->data); - factories = g_list_concat(cut_factory_builder_build_all(builder), factories); + GList *built_factories; + built_factories = cut_factory_builder_build_all(builder); + factories = g_list_concat(g_list_copy(built_factories), factories); } return factories; } @@ -196,7 +200,7 @@ cut_contractor_build_all_loader_customizer_factories (CutContractor *contractor) CutFactoryBuilder *builder; builder = CUT_FACTORY_BUILDER(priv->loader_customizer_factory_builder); - return cut_factory_builder_build_all(builder); + return g_list_copy(cut_factory_builder_build_all(builder)); } void |