From e9271fba73619add54345ab908cad1ad6e909b94 Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Fri, 5 May 2017 21:15:31 +0000 Subject: [PATCH] [StreamArray] Pipe the Offset through the constructor. When randomly accessing an element by offset, we weren't passing the offset through so if you called .offset() it would return a value of 0. llvm-svn: 302292 --- llvm/include/llvm/Support/BinaryStreamArray.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/llvm/include/llvm/Support/BinaryStreamArray.h b/llvm/include/llvm/Support/BinaryStreamArray.h index b25c03a95c0a..b5d56391786b 100644 --- a/llvm/include/llvm/Support/BinaryStreamArray.h +++ b/llvm/include/llvm/Support/BinaryStreamArray.h @@ -64,8 +64,8 @@ class VarStreamArrayIterator public: VarStreamArrayIterator() = default; VarStreamArrayIterator(const ArrayType &Array, const WrappedCtx &Ctx, - BinaryStreamRef Stream, bool *HadError = nullptr) - : IterRef(Stream), Ctx(&Ctx), Array(&Array), HadError(HadError) { + BinaryStreamRef Stream, bool *HadError = nullptr, uint32_t Offset = 0) + : IterRef(Stream), Ctx(&Ctx), Array(&Array), HadError(HadError), AbsOffset(Offset) { if (IterRef.getLength() == 0) moveToEnd(); else { @@ -238,7 +238,7 @@ public: /// since the behavior is undefined if \p Offset does not refer to the /// beginning of a valid record. Iterator at(uint32_t Offset) const { - return Iterator(*this, Ctx, Stream.drop_front(Offset), nullptr); + return Iterator(*this, Ctx, Stream.drop_front(Offset), nullptr, Offset); } BinaryStreamRef getUnderlyingStream() const { return Stream; }