From 12ac6a0798a573a0c66faa29dc797ef52392c7da Mon Sep 17 00:00:00 2001 From: Eric Cano <Eric.Cano@cern.ch> Date: Fri, 16 Aug 2019 15:56:22 +0200 Subject: [PATCH] #533 Added copy constructor to Regex. --- common/utils/Regex.cpp | 10 +++++++--- common/utils/Regex.hpp | 5 ++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/common/utils/Regex.cpp b/common/utils/Regex.cpp index d064158292..60a91ce24e 100644 --- a/common/utils/Regex.cpp +++ b/common/utils/Regex.cpp @@ -27,10 +27,10 @@ namespace cta { namespace utils { -Regex::Regex(const char * re_str) : m_set(false) { - if (int rc = ::regcomp(&m_re, re_str, REG_EXTENDED)) { +Regex::Regex(const std::string & re_str) : m_reStr(re_str), m_set(false) { + if (int rc = ::regcomp(&m_re, m_reStr.c_str(), REG_EXTENDED)) { std::string error("Could not compile regular expression: \""); - error += re_str; + error += m_reStr; error += "\""; char re_err[1024]; if (::regerror(rc, &m_re, re_err, sizeof (re_err))) { @@ -42,6 +42,10 @@ Regex::Regex(const char * re_str) : m_set(false) { m_set = true; } +Regex::Regex(const Regex& o) { + Regex(o.m_reStr); +} + Regex::~Regex() { if (m_set) ::regfree(&m_re); diff --git a/common/utils/Regex.hpp b/common/utils/Regex.hpp index 6a8cab9717..5b5bf259d7 100644 --- a/common/utils/Regex.hpp +++ b/common/utils/Regex.hpp @@ -29,7 +29,8 @@ namespace cta { namespace utils { class Regex { public: - Regex(const char * re_str); + Regex(const std::string & re_str); + Regex(const Regex & o); virtual ~Regex(); /*! @@ -45,6 +46,8 @@ class Regex { } private: + // We keep around the string from which the RE was compiled to allow copying. + std::string m_reStr; regex_t m_re; bool m_set; }; -- GitLab