X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fperl.c;h=3df11a3d594096ec7ca3d63b8877adbe77654c26;hb=a019b6c8144745db63c599680bd693ac02f11666;hp=597368f1ae71884d661dbf0cd4b1713b1766a757;hpb=7746d34c8ecc4fa984187cf2b1a93d1b6d3a061b;p=collectd.git diff --git a/src/perl.c b/src/perl.c index 597368f1..3df11a3d 100644 --- a/src/perl.c +++ b/src/perl.c @@ -27,13 +27,19 @@ /* do not automatically get the thread specific perl interpreter */ #define PERL_NO_GET_CONTEXT +#define DONT_POISON_SPRINTF_YET 1 #include "collectd.h" +#undef DONT_POISON_SPRINTF_YET #include "configfile.h" #include #include +#if defined(COLLECT_DEBUG) && COLLECT_DEBUG && defined(__GNUC__) && __GNUC__ +# pragma GCC poison sprintf +#endif + #include /* Some versions of Perl define their own version of DEBUG... :-/ */ @@ -1475,7 +1481,9 @@ static int init_pi (int argc, char **argv) PL_exit_flags |= PERL_EXIT_DESTRUCT_END; if (0 != perl_parse (aTHX_ xs_init, argc, argv, NULL)) { - log_err ("init_pi: Unable to bootstrap Collectd."); + SV *err = get_sv ("@", 1); + log_err ("init_pi: Unable to bootstrap Collectd: %s", + SvPV_nolen (err)); perl_destruct (perl_threads->head->interp); perl_free (perl_threads->head->interp); @@ -1642,16 +1650,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"))