From f2a53cbfdd2a9cadf320960d28e1b10c63dffa62 Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Mon, 20 Apr 2020 17:56:25 +0200
Subject: [PATCH] Compile the regex just one time

---
 src/mkv/write.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/mkv/write.c b/src/mkv/write.c
index b712d838..08d2764f 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(&regex, rgx, REG_EXTENDED), "Failed to compile regex", error);
+    if (!regex_init)
+        GOTO_IF(regcomp(&regex, rgx, REG_EXTENDED), "Failed to compile regex", error);
+
     memset(meta, 0, sizeof(struct kara_metadata));
     memset(msgbuf, 0, LEKTOR_TAG_MAX * sizeof(char));
 
-- 
GitLab