From a97c67c8665de3384fcd3656006504f79eceebfc Mon Sep 17 00:00:00 2001 From: Jim Laskey Date: Sun, 29 Oct 2006 09:19:59 +0000 Subject: [PATCH] Try again. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31278 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Support/FoldingSet.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/Support/FoldingSet.cpp b/lib/Support/FoldingSet.cpp index 4fe67d7895e..1bd20145f45 100644 --- a/lib/Support/FoldingSet.cpp +++ b/lib/Support/FoldingSet.cpp @@ -51,6 +51,9 @@ void FoldingSetImpl::NodeID::AddDouble(double D) { } void FoldingSetImpl::NodeID::AddString(const std::string &String) { unsigned Size = String.size(); + Bits.push_back(Size); + if (!Size) return; + unsigned Units = Size / 4; unsigned Pos = 0; const unsigned *Base = (const unsigned *)String.data(); @@ -58,7 +61,7 @@ void FoldingSetImpl::NodeID::AddString(const std::string &String) { // If the string is aligned do a bulk transfer. if (!((intptr_t)Base & 3)) { Bits.append(Base, Base + Units); - Pos = Units * sizeof(unsigned); + Pos = (Units + 1) * 4; } else { // Otherwise do it the hard way. for ( Pos += 4; Pos <= Size; Pos += 4) { -- 2.34.1