unchanged: --- protobuf-cleaned/src/google/protobuf/stubs/once.cc 2015-12-30 13:21:46.000000000 -0800 +++ protobuf-patched/src/google/protobuf/stubs/once.cc 2016-03-31 13:25:32.180017848 -0700 @@ -62,6 +62,13 @@ } // namespace +void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()) { + if (internal::Acquire_Load(once) != ONCE_STATE_DONE) { + internal::FunctionClosure0 func(init_func, false); + GoogleOnceInitImpl(once, &func); + } +} + void GoogleOnceInitImpl(ProtobufOnceType* once, Closure* closure) { internal::AtomicWord state = internal::Acquire_Load(once); // Fast path. The provided closure was already executed. only in patch2: unchanged: --- protobuf-cleaned/src/google/protobuf/stubs/once.h 2015-12-30 13:21:46.000000000 -0800 +++ protobuf-patched/src/google/protobuf/stubs/once.h 2016-03-31 13:25:35.520013490 -0700 @@ -122,12 +122,8 @@ LIBPROTOBUF_EXPORT void GoogleOnceInitImpl(ProtobufOnceType* once, Closure* closure); -inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()) { - if (internal::Acquire_Load(once) != ONCE_STATE_DONE) { - internal::FunctionClosure0 func(init_func, false); - GoogleOnceInitImpl(once, &func); - } -} +LIBPROTOBUF_EXPORT +void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()); template inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)(Arg*),