{
next = job->next;
if (job->pattern != NULL) free(job->pattern);
- if (job->hints != NULL) free(job->hints);
+ if (job->hints != NULL)
+ {
+#ifdef PCRE_CONFIG_JIT
+ pcre_free_study(job->hints);
+#else
+ free(job->hints);
+#endif
+ }
if (job->substitute != NULL)
{
if (job->substitute->text != NULL) free(job->substitute->text);
int flags;
int capturecount;
const char *error;
+ int pcre_study_options = 0;
*errptr = 0;
}
+#ifdef PCRE_STUDY_JIT_COMPILE
+ pcre_study_options = PCRE_STUDY_JIT_COMPILE;
+#endif
+
/*
* Generate hints. This has little overhead, since the
* hints will be NULL for a boring pattern anyway.
*/
- newjob->hints = pcre_study(newjob->pattern, 0, &error);
+ newjob->hints = pcre_study(newjob->pattern, pcre_study_options, &error);
if (error != NULL)
{
*errptr = PCRS_ERR_STUDY;
}
-static const char warning[] = "... [too long, truncated]";
/*********************************************************************
*
* Function : pcrs_compile_dynamic_command
* with a truncation message and close the pattern
* properly.
*/
+ static const char warning[] = "... [too long, truncated]";
const size_t trailer_size = sizeof(warning) + 3; /* 3 for d + "gT" */
char *trailer_start = buf + sizeof(buf) - trailer_size;