blob: c9ef9e3ecec9ef65d59994048ed68e102fe7f93c [file] [log] [blame]
diff --git a/re2/compile.cc b/re2/compile.cc
index adb45fd..14e401a 100644
--- a/re2/compile.cc
+++ b/re2/compile.cc
@@ -44,7 +44,7 @@ struct PatchList {
static PatchList Append(Prog::Inst *inst0, PatchList l1, PatchList l2);
};
-static PatchList nullPatchList;
+static PatchList nullPatchList = { 0 };
// Returns patch list containing just p.
PatchList PatchList::Mk(uint32 p) {
@@ -106,12 +106,13 @@ struct Frag {
uint32 begin;
PatchList end;
- explicit Frag(LinkerInitialized) {}
Frag() : begin(0) { end.p = 0; } // needed so Frag can go in vector
Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
};
-static Frag kNullFrag(LINKER_INITIALIZED);
+static Frag NullFrag() {
+ return Frag();
+}
// Input encodings.
enum Encoding {
@@ -684,13 +685,13 @@ Frag Compiler::PreVisit(Regexp* re, Frag, bool* stop) {
if (failed_)
*stop = true;
- return kNullFrag; // not used by caller
+ return NullFrag(); // not used by caller
}
Frag Compiler::Literal(Rune r, bool foldcase) {
switch (encoding_) {
default:
- return kNullFrag;
+ return NullFrag();
case kEncodingLatin1:
return ByteRange(r, r, foldcase);
@@ -1006,7 +1007,7 @@ Prog* Compiler::Compile(Regexp* re, bool reversed, int64 max_mem) {
bool is_anchor_end = IsAnchorEnd(&sre, 0);
// Generate fragment for entire regexp.
- Frag f = c.WalkExponential(sre, kNullFrag, 2*c.max_inst_);
+ Frag f = c.WalkExponential(sre, NullFrag(), 2*c.max_inst_);
sre->Decref();
if (c.failed_)
return NULL;
@@ -1097,7 +1098,7 @@ Prog* Compiler::CompileSet(const RE2::Options& options, RE2::Anchor anchor,
c.Setup(pf, options.max_mem(), anchor);
// Compile alternation of fragments.
- Frag all = c.WalkExponential(re, kNullFrag, 2*c.max_inst_);
+ Frag all = c.WalkExponential(re, NullFrag(), 2*c.max_inst_);
re->Decref();
if (c.failed_)
return NULL;
diff --git a/re2/re2.cc b/re2/re2.cc
index 0da886d..b9e44fc 100644
--- a/re2/re2.cc
+++ b/re2/re2.cc
@@ -32,10 +32,10 @@ namespace re2 {
static const int kMaxArgs = 16;
static const int kVecSize = 1+kMaxArgs;
-const VariadicFunction2<bool, const StringPiece&, const RE2&, RE2::Arg, RE2::FullMatchN> RE2::FullMatch;
-const VariadicFunction2<bool, const StringPiece&, const RE2&, RE2::Arg, RE2::PartialMatchN> RE2::PartialMatch;
-const VariadicFunction2<bool, StringPiece*, const RE2&, RE2::Arg, RE2::ConsumeN> RE2::Consume;
-const VariadicFunction2<bool, StringPiece*, const RE2&, RE2::Arg, RE2::FindAndConsumeN> RE2::FindAndConsume;
+const VariadicFunction2<bool, const StringPiece&, const RE2&, RE2::Arg, RE2::FullMatchN> RE2::FullMatch = {};
+const VariadicFunction2<bool, const StringPiece&, const RE2&, RE2::Arg, RE2::PartialMatchN> RE2::PartialMatch = {};
+const VariadicFunction2<bool, StringPiece*, const RE2&, RE2::Arg, RE2::ConsumeN> RE2::Consume = {};
+const VariadicFunction2<bool, StringPiece*, const RE2&, RE2::Arg, RE2::FindAndConsumeN> RE2::FindAndConsume = {};
#define kDefaultMaxMem (8<<20)
diff --git a/re2/variadic_function.h b/re2/variadic_function.h
index 8d2b763..7c7d6d5 100644
--- a/re2/variadic_function.h
+++ b/re2/variadic_function.h
@@ -11,8 +11,6 @@ template <typename Result, typename Param0, typename Param1, typename Arg,
Result (*Func)(Param0, Param1, const Arg* const [], int count)>
class VariadicFunction2 {
public:
- VariadicFunction2() {}
-
Result operator()(Param0 p0, Param1 p1) const {
return Func(p0, p1, 0, 0);
}