@@ -284,24 +284,31 @@ namespace Sass {
284
284
// This is only used in Complex_Selector::unify_with for now, may need modifications to fit other needs
285
285
Node Node::naiveTrim (Node& seqses, Context& ctx) {
286
286
287
- SourcesSet sel_set;
288
-
289
287
vector<Node*> res;
288
+ vector<Complex_Selector*> known;
289
+
290
+ NodeDeque::reverse_iterator seqsesIter = seqses.collection ()->rbegin (),
291
+ seqsesIterEnd = seqses.collection ()->rend ();
290
292
291
- // Add all selectors we don't already have, everything else just add it blindly
292
- // We iterate from the back to the front, since in ruby we probably overwrite existing the items
293
- for (NodeDeque::iterator seqsesIter = seqses.collection ()->end () - 1 , seqsesIterEnd = seqses.collection ()->begin () - 1 ; seqsesIter != seqsesIterEnd; --seqsesIter) {
293
+ for (; seqsesIter != seqsesIterEnd; ++seqsesIter)
294
+ {
294
295
Node& seqs1 = *seqsesIter;
295
296
if ( seqs1.isSelector () ) {
296
- auto found = sel_set.find ( seqs1.selector () );
297
- if ( found == sel_set.end () ) {
298
- sel_set.insert (seqs1.selector ());
297
+ Complex_Selector* sel = seqs1.selector ();
298
+ vector<Complex_Selector*>::iterator it;
299
+ bool found = false ;
300
+ for (it = known.begin (); it != known.end (); ++it) {
301
+ if (**it == *sel) { found = true ; break ; }
302
+ }
303
+ if ( !found ) {
304
+ known.push_back (seqs1.selector ());
299
305
res.push_back (&seqs1);
300
306
}
301
307
} else {
302
308
res.push_back (&seqs1);
303
309
}
304
310
}
311
+
305
312
Node result = Node::createCollection ();
306
313
307
314
for (size_t i = res.size () - 1 ; i != string::npos; --i) {
0 commit comments