|  | 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); | 
|  | } |