On 6 August 2010 22:43, Andy Koppe wrote:
> On 6 August 2010 21:08, Corinna Vinschen wrote:
>> +      for (n = unmet.begin (); n != unmet.end (); ++n)
>> +       {
>> +         if (!(*n).first->prereq_checked ())
>> +           {
>> +             (*n).first->prereq_checked (true);
>> +             for (vector <vector <PackageSpecification *> *>::iterator i =
>> +                  (*n).first->curr.depends ()->begin ();
>> +                  i < (*n).first->curr.depends ()->end (); ++i)
>> +               {
>> +                 PackageSpecification *spec = (*i)->at(0);
>> +                 packagemeta *pack = db.findBinary (*spec);
>> +                 if (!pack)
>> +                   continue;
>> +                 if (pack->desired && spec->satisfies (pack->desired))
>> +                   ;
>> +                 else if (unmet.find (pack) == unmet.end ())
>> +                   {
>> +                     foundUnmet2ndLevel = true;
>> +                     unmet[pack].push_back ((*n).first);
>> +                   }
>> +               }
>> +           }
>
> Hang on, I don't think iterating over 'unmet' while inserting elements
> into it is valid, because it's a map (i.e. probably a binary tree).

Actually, it is valid, but we'll miss out on any packages that happen
to be inserted before the iterator, which of course is why
'foundUnmet2ndLevel' is there.

Andy

Reply via email to