diff --git a/re2/set.cc b/re2/set.cc index d1610b0e9629088a455fee5ebd62f32d66261698..c0b5ffefed5bf1d36e04e8ae7ec411c07b3564ff 100644 --- a/re2/set.cc +++ b/re2/set.cc @@ -16,10 +16,8 @@ #include "re2/re2.h" #include "regex_internal.h" #include "re2/stringpiece.h" -extern "C" -{ - #include "regex-capi/include/rure.h" -} +#include "regex-capi/include/rure.h" + using namespace std; namespace re2 @@ -80,12 +78,14 @@ namespace re2 error->assign(msg); LOG(ERROR) << "Regexp Error '" << pattern.data() << "':" << msg << "'"; } + rure_free(re); return -1; } else { elem_.push_back(pair(rure_pattern, (re2::Regexp*)nullptr)); size_++; + rure_free(re); return place_num; } } @@ -113,6 +113,7 @@ namespace re2 return false; } prog_.reset((Prog *)re); + rure_set_free(re); compiled_ = true; return true; }