@@ -611,18 +611,29 @@ namespace Sass {
611
611
{
612
612
if (CommaSequence_Selector* extender = dynamic_cast <CommaSequence_Selector*>(selector ())) {
613
613
Selector* s = e->selector ();
614
- if (Selector_Schema* schema = dynamic_cast <Selector_Schema*>(s)) {
615
- if (schema->has_parent_ref ()) s = eval (schema);
614
+ CommaSequence_Selector* sl = NULL ;
615
+ // check if we already have a valid selector list
616
+ if ((sl = dynamic_cast <CommaSequence_Selector*>(s))) {}
617
+ // convert selector schema to a selector list
618
+ else if (Selector_Schema* schema = dynamic_cast <Selector_Schema*>(s)) {
619
+ if (schema->has_real_parent_ref ()) {
620
+ sl = eval (schema);
621
+ } else {
622
+ selector_stack.push_back (0 );
623
+ sl = eval (schema);
624
+ sl->remove_parent_selectors ();
625
+ selector_stack.pop_back ();
626
+ }
616
627
}
617
- if (CommaSequence_Selector* sl = dynamic_cast <CommaSequence_Selector*>(s)) {
618
- for (Sequence_Selector* cs : *sl) {
619
- if (cs != NULL && cs-> head () != NULL ) {
620
- cs->head ()-> media_block (media_block_stack. back ());
621
- }
628
+ // abort on invalid selector
629
+ if (sl == NULL ) return NULL ;
630
+ for (Sequence_Selector* cs : *sl ) {
631
+ if (cs != NULL && cs->head () != NULL ) {
632
+ cs-> head ()-> media_block (media_block_stack. back ());
622
633
}
623
634
}
624
635
selector_stack.push_back (0 );
625
- expand_selector_list (s , extender);
636
+ expand_selector_list (sl , extender);
626
637
selector_stack.pop_back ();
627
638
}
628
639
return 0 ;
0 commit comments