Index: third_party/protobuf/src/google/protobuf/stubs/statusor.h |
diff --git a/third_party/protobuf/src/google/protobuf/stubs/statusor.h b/third_party/protobuf/src/google/protobuf/stubs/statusor.h |
index a9d2b374bf9a0ec58067f2895a3d8c378a77e898..29f869ad5e8d58a334c8cf7067e83027cf9b9e61 100644 |
--- a/third_party/protobuf/src/google/protobuf/stubs/statusor.h |
+++ b/third_party/protobuf/src/google/protobuf/stubs/statusor.h |
@@ -224,14 +224,14 @@ inline StatusOr<T>& StatusOr<T>::operator=(const StatusOr<T>& other) { |
template<typename T> |
template<typename U> |
inline StatusOr<T>::StatusOr(const StatusOr<U>& other) |
- : status_(other.status_), value_(other.value_) { |
+ : status_(other.status_), value_(other.status_.ok() ? other.value_ : T()) { |
} |
template<typename T> |
template<typename U> |
inline StatusOr<T>& StatusOr<T>::operator=(const StatusOr<U>& other) { |
status_ = other.status_; |
- value_ = other.value_; |
+ if (status_.ok()) value_ = other.value_; |
return *this; |
} |