From 2f8f97099f90ec1cfb5c0f46c3b94793efc439cc Mon Sep 17 00:00:00 2001 From: jsdelfino Date: Wed, 21 Sep 2011 05:48:57 +0000 Subject: Fix core dump when running Python components in a virtual host. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1173503 13f79535-47bb-0310-9956-ffa450edef68 --- sca-cpp/trunk/modules/python/mod-python.cpp | 4 ++-- sca-cpp/trunk/modules/server/mod-eval.hpp | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'sca-cpp') diff --git a/sca-cpp/trunk/modules/python/mod-python.cpp b/sca-cpp/trunk/modules/python/mod-python.cpp index 24e0b3bcb0..f4d2febf10 100644 --- a/sca-cpp/trunk/modules/python/mod-python.cpp +++ b/sca-cpp/trunk/modules/python/mod-python.cpp @@ -46,7 +46,7 @@ struct pythonLifecycle { const value operator()(const list& params) const { const value func = car(params); if (func == "pythonRuntime") - return (gc_ptr)(value*)(void*)&py; + return (gc_ptr)(value*)&py; return lambda&)>(); } }; @@ -67,7 +67,7 @@ const value applyLifecycle(unused const list& params) { const failable&)> > evalImplementation(const string& path, const value& impl, const list& px, const lambda&)>& lifecycle) { const string itype(elementName(impl)); if (contains(itype, ".python")) { - const void* p = (gc_ptr)lifecycle(mklist("pythonRuntime")); + const value* p = (gc_ptr)lifecycle(mklist("pythonRuntime")); return modpython::evalImplementation(path, impl, px, *(python::PythonRuntime*)p); } if (contains(itype, ".cpp")) diff --git a/sca-cpp/trunk/modules/server/mod-eval.hpp b/sca-cpp/trunk/modules/server/mod-eval.hpp index 34cdfdbb29..00f59b9dda 100644 --- a/sca-cpp/trunk/modules/server/mod-eval.hpp +++ b/sca-cpp/trunk/modules/server/mod-eval.hpp @@ -724,6 +724,7 @@ const failable startComponents(ServerConf& sc) { class VirtualHostConf { public: VirtualHostConf(const gc_pool& p, const ServerConf& sc) : sc(sc), vsc(pool(p), sc.server) { + vsc.lifecycle = sc.lifecycle; vsc.virtualHostContributionPath = sc.virtualHostContributionPath; vsc.virtualHostCompositeName = sc.virtualHostCompositeName; vsc.ca = sc.ca; @@ -878,6 +879,7 @@ const int postConfigMerge(const ServerConf& mainsc, server_rec* s) { if (sc.wiringServerName == "") sc.wiringServerName = mainsc.wiringServerName != ""? mainsc.wiringServerName : httpd::serverName(s); debug(sc.wiringServerName, "modeval::postConfigMerge::wiringServerName"); + sc.lifecycle = mainsc.lifecycle; sc.contributionPath = mainsc.contributionPath; sc.compositeName = mainsc.compositeName; sc.virtualHostContributionPath = mainsc.virtualHostContributionPath; @@ -922,6 +924,7 @@ int postConfig(apr_pool_t *p, unused apr_pool_t *plog, unused apr_pool_t *ptemp, const failable r = failableResult(applyLifecycle(mklist("start"))); if (!hasContent(r)) return -1; + debug("modeval::postConfig::setlifecycle"); sc.lifecycle = content(r); } if (count > 1) { @@ -929,6 +932,7 @@ int postConfig(apr_pool_t *p, unused apr_pool_t *plog, unused apr_pool_t *ptemp, const failable r = failableResult(applyLifecycle(mklist("restart"))); if (!hasContent(r)) return -1; + debug("modeval::postConfig::setlifecycle"); sc.lifecycle = content(r); } -- cgit v1.2.3