diff --git a/src/mkv/write.c b/src/mkv/write.c index b712d838e1d036e1df3af820580d9dfffcf84302..08d2764f35d3cdb983140dbdda555f93d90a343b 100644 --- a/src/mkv/write.c +++ b/src/mkv/write.c @@ -141,7 +141,8 @@ error: static bool metadata_from_path(char *const mkvfile, struct kara_metadata *meta) { - regex_t regex; + static regex_t regex; + static int regex_init = 0; const size_t nmatch = 10; regmatch_t pmatch[nmatch]; int reti, sta = false; @@ -152,7 +153,9 @@ metadata_from_path(char *const mkvfile, struct kara_metadata *meta) "(jp|fr|en|ru|sp|it|ch|latin|multi|undefined)/(.+)/" "(.+) - (OP|ED|IS|AMV|VOCA|PV|MV|LIVE)([[:digit:]]*) - (.+)\\.mkv$"; - GOTO_IF(regcomp(®ex, rgx, REG_EXTENDED), "Failed to compile regex", error); + if (!regex_init) + GOTO_IF(regcomp(®ex, rgx, REG_EXTENDED), "Failed to compile regex", error); + memset(meta, 0, sizeof(struct kara_metadata)); memset(msgbuf, 0, LEKTOR_TAG_MAX * sizeof(char));