/*********************************************************************************************************************************** Execute main function in Perl ***********************************************************************************************************************************/ int perlExec(void) { FUNCTION_LOG_VOID(logLevelDebug); // Initialize Perl perlInit(); // Run perl main function perlEval(perlMain()); // Return result code int code = (int)SvIV(get_sv("iResult", 0)); bool errorC = (int)SvIV(get_sv("bErrorC", 0)); char *message = SvPV_nolen(get_sv("strMessage", 0)); // {uncovered - internal Perl macro branch} if (code >= errorTypeCode(&AssertError)) // {uncovered - success tested in integration} { if (errorC) // {+uncovered} RETHROW(); // {+uncovered} else THROW_CODE(code, strlen(message) == 0 ? PERL_EMBED_ERROR : message); // {+uncovered} } FUNCTION_LOG_RETURN(INT, code); // {+uncovered} }
/*********************************************************************************************************************************** Execute main function in Perl ***********************************************************************************************************************************/ static int perlExecResult(int code, bool errorC, const char *message) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, code); FUNCTION_TEST_PARAM(BOOL, errorC); FUNCTION_TEST_PARAM(STRINGZ, message); FUNCTION_TEST_END(); int result = code; if (code >= errorTypeCode(&AssertError)) { if (errorC) RETHROW(); else THROW_CODE(code, strlen(message) == 0 ? PERL_EMBED_ERROR : message); } FUNCTION_TEST_RETURN(result); }