Author: jsdelfino
Date: Wed Sep 21 05:48:57 2011
New Revision: 1173503

URL: http://svn.apache.org/viewvc?rev=1173503&view=rev
Log:
Fix core dump when running Python components in a virtual host.

Modified:
    tuscany/sca-cpp/trunk/modules/python/mod-python.cpp
    tuscany/sca-cpp/trunk/modules/server/mod-eval.hpp

Modified: tuscany/sca-cpp/trunk/modules/python/mod-python.cpp
URL: 
http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/python/mod-python.cpp?rev=1173503&r1=1173502&r2=1173503&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/python/mod-python.cpp (original)
+++ tuscany/sca-cpp/trunk/modules/python/mod-python.cpp Wed Sep 21 05:48:57 2011
@@ -46,7 +46,7 @@ struct pythonLifecycle {
     const value operator()(const list<value>& params) const {
         const value func = car(params);
         if (func == "pythonRuntime")
-            return (gc_ptr<value>)(value*)(void*)&py;
+            return (gc_ptr<value>)(value*)&py;
         return lambda<value(const list<value>&)>();
     }
 };
@@ -67,7 +67,7 @@ const value applyLifecycle(unused const 
 const failable<lambda<value(const list<value>&)> > evalImplementation(const 
string& path, const value& impl, const list<value>& px, const 
lambda<value(const list<value>&)>& lifecycle) {
     const string itype(elementName(impl));
     if (contains(itype, ".python")) {
-        const void* p = 
(gc_ptr<value>)lifecycle(mklist<value>("pythonRuntime"));
+        const value* p = 
(gc_ptr<value>)lifecycle(mklist<value>("pythonRuntime"));
         return modpython::evalImplementation(path, impl, px, 
*(python::PythonRuntime*)p);
     }
     if (contains(itype, ".cpp"))

Modified: tuscany/sca-cpp/trunk/modules/server/mod-eval.hpp
URL: 
http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/server/mod-eval.hpp?rev=1173503&r1=1173502&r2=1173503&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/server/mod-eval.hpp (original)
+++ tuscany/sca-cpp/trunk/modules/server/mod-eval.hpp Wed Sep 21 05:48:57 2011
@@ -724,6 +724,7 @@ const failable<bool> startComponents(Ser
 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 ServerCo
     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
         const failable<value> r = 
failableResult(applyLifecycle(mklist<value>("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
         const failable<value> r = 
failableResult(applyLifecycle(mklist<value>("restart")));
         if (!hasContent(r))
             return -1;
+        debug("modeval::postConfig::setlifecycle");
         sc.lifecycle = content(r);
     }
 


Reply via email to