perl plugin: Re-get the perl interpreter after parsing each configuration option.
authorSebastian Harl <sh@tokkee.org>
Tue, 26 Aug 2008 09:52:53 +0000 (11:52 +0200)
committerFlorian Forster <octo@huhu.verplant.org>
Tue, 26 Aug 2008 16:59:47 +0000 (18:59 +0200)
The current perl interpreter might change while parsing the configuration
(e.g. the first interpreter is created by the "LoadPlugin" option), so this is
to make sure that we're using the right interpreter at all times.

Signed-off-by: Sebastian Harl <sh@tokkee.org>
Signed-off-by: Florian Forster <octo@huhu.verplant.org>
src/perl.c

index 9cbd593..8061e0b 100644 (file)
@@ -1559,16 +1559,14 @@ static int perl_config (oconfig_item_t *ci)
 {
        int i = 0;
 
-       dTHX;
-
-       /* dTHX does not get any valid values in case Perl
-        * has not been initialized */
-       if (NULL == perl_threads)
-               aTHX = NULL;
+       dTHXa (NULL);
 
        for (i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *c = ci->children + i;
 
+               if (NULL != perl_threads)
+                       aTHX = PERL_GET_CONTEXT;
+
                if (0 == strcasecmp (c->key, "LoadPlugin"))
                        perl_config_loadplugin (aTHX_ c);
                else if (0 == strcasecmp (c->key, "BaseName"))