[lld] r218548 - Fix crash bug on Windows.
Duncan P. N. Exon Smith
dexonsmith at apple.com
Fri Sep 26 16:21:07 PDT 2014
> On Sep 26, 2014, at 3:27 PM, Rui Ueyama <ruiu at google.com> wrote:
>
> Author: ruiu
> Date: Fri Sep 26 17:27:42 2014
> New Revision: 218548
>
> URL: http://llvm.org/viewvc/llvm-project?rev=218548&view=rev
> Log:
> Fix crash bug on Windows.
>
> Mutating the DenseMap here seems to cause the Windows executable
> to crash. Don't use operator[] to access possibly nonexistent key.
>
> Modified:
> lld/trunk/lib/Core/Resolver.cpp
>
> Modified: lld/trunk/lib/Core/Resolver.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Core/Resolver.cpp?rev=218548&r1=218547&r2=218548&view=diff
> ==============================================================================
> --- lld/trunk/lib/Core/Resolver.cpp (original)
> +++ lld/trunk/lib/Core/Resolver.cpp Fri Sep 26 17:27:42 2014
> @@ -305,8 +305,10 @@ void Resolver::markLive(const Atom *atom
> if (const DefinedAtom *defAtom = dyn_cast<DefinedAtom>(atom)) {
> for (const Reference *ref : *defAtom)
> markLive(ref->target());
> - for (const Atom *target : _reverseRef[defAtom])
> - markLive(target);
> + auto it = _reverseRef.find(defAtom);
> + if (it != _reverseRef.end())
> + for (const Atom *target : it->second)
> + markLive(target);
Should this just be:
for (const Atom *target : _reverseRef.lookup(defAtom))
markLive(target);
?
> }
> }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list