Chromium Code Reviews| Index: mojo/public/cpp/bindings/lib/array_serialization.h |
| diff --git a/mojo/public/cpp/bindings/lib/array_serialization.h b/mojo/public/cpp/bindings/lib/array_serialization.h |
| index 5db27a5502a5a238ec1a6765d8f2854248a36e36..d03529422160b4f891cf6ae47bdfc331d4f4b2fb 100644 |
| --- a/mojo/public/cpp/bindings/lib/array_serialization.h |
| +++ b/mojo/public/cpp/bindings/lib/array_serialization.h |
| @@ -46,7 +46,7 @@ class ArrayIterator<Traits, MaybeConstUserType, true> { |
| using GetNextResult = |
| decltype(Traits::GetValue(std::declval<IteratorType&>())); |
| GetNextResult GetNext() { |
| - auto& value = Traits::GetValue(iter_); |
| + GetNextResult value = Traits::GetValue(iter_); |
| Traits::AdvanceIterator(iter_); |
| return value; |
| } |
| @@ -361,8 +361,10 @@ struct ArraySerializer<MojomType, |
| SerializationContext* context) { |
| size_t element_count = input->GetSize(); |
| size_t size = sizeof(Data) + element_count * sizeof(typename Data::Element); |
| - for (size_t i = 0; i < element_count; ++i) |
| - size += PrepareToSerialize<Element>(input->GetNext(), context); |
| + for (size_t i = 0; i < element_count; ++i) { |
| + typename UserTypeIterator::GetNextResult next = input->GetNext(); |
|
yzshen1
2016/07/28 18:25:19
Please also update the documentation of array_trai
Fady Samuel
2016/07/28 19:53:31
Done.
|
| + size += PrepareToSerialize<Element>(next, context); |
| + } |
| return size; |
| } |
| @@ -374,7 +376,8 @@ struct ArraySerializer<MojomType, |
| size_t size = input->GetSize(); |
| for (size_t i = 0; i < size; ++i) { |
| DataElementPtr data_ptr; |
| - SerializeCaller<Element>::Run(input->GetNext(), buf, &data_ptr, |
| + typename UserTypeIterator::GetNextResult next = input->GetNext(); |
| + SerializeCaller<Element>::Run(next, buf, &data_ptr, |
| validate_params->element_validate_params, |
| context); |
| output->at(i).Set(data_ptr); |