Skip to content
This repository was archived by the owner on Oct 24, 2025. It is now read-only.

Commit c57fc40

Browse files
committed
Fixup load-css inclusion in stylesheet
1 parent 01094d9 commit c57fc40

File tree

1 file changed

+36
-16
lines changed

1 file changed

+36
-16
lines changed

src/fn_meta.cpp

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -500,8 +500,9 @@ namespace Sass {
500500
local.idxs->varFrame = 0xFFFFFFFF;
501501
local.idxs->mixFrame = 0xFFFFFFFF;
502502
local.idxs->fnFrame = 0xFFFFFFFF;
503-
503+
// eval.selectorStack.push_back(nullptr);
504504
sheet = compiler.registerImport(loaded); // @use
505+
// eval.selectorStack.pop_back();
505506
sheet->root2->idxs = local.idxs;
506507
}
507508
else if (sheet->root2->isActive) {
@@ -524,46 +525,65 @@ namespace Sass {
524525
}
525526
for (auto child : sheet->root2->loaded->elements()) {
526527
if (auto css = child->isaCssStyleRule()) {
527-
for (auto inner : css->elements()) {
528-
auto pr = eval.current->isaCssStyleRule();
529-
auto copy = SASS_MEMORY_COPY(css->selector());
530-
for (ComplexSelector* asd : copy->elements()) {
531-
asd->chroots(false);
528+
if (auto pr = eval.current->isaCssStyleRule()) {
529+
for (auto inner : css->elements()) {
530+
auto copy = SASS_MEMORY_COPY(css->selector());
531+
for (ComplexSelector* asd : copy->elements()) {
532+
asd->chroots(false);
533+
}
534+
// auto reduced1 = copy1->resolveParentSelectors(css->selector(), compiler, false);
535+
SelectorListObj resolved = copy->resolveParentSelectors(pr->selector(), compiler, true);
536+
auto newRule = SASS_MEMORY_NEW(CssStyleRule, css->pstate(), eval.current, resolved, { inner });
537+
eval.current->parent()->append(newRule);
532538
}
533-
// auto reduced1 = copy1->resolveParentSelectors(css->selector(), compiler, false);
534-
SelectorListObj resolved = copy->resolveParentSelectors(pr->selector(), compiler, true);
535-
auto newRule = SASS_MEMORY_NEW(CssStyleRule, css->pstate(), eval.current, resolved, { inner });
536-
eval.current->parent()->append(newRule);
539+
}
540+
else {
541+
if (eval.current) eval.current->append(child);
537542
}
538543
}
539544
else {
540545
if (eval.current) eval.current->append(child);
541546
}
542547
}
543-
}
548+
}
544549
else {
545550
Root* root = sheet->root2;
546-
547551
root->isActive = true;
548552
root->isLoading = true;
549-
root->loaded = eval.current;
553+
//root->loaded = eval.current;
550554
root->loaded = SASS_MEMORY_NEW(CssStyleRule,
551555
root->pstate(), nullptr, nullptr);
552556
auto oldCurrent = eval.current;
553557
eval.current = root->loaded;
554558
EnvScope scoped(compiler.varRoot, root->idxs);
559+
eval.selectorStack.push_back(nullptr);
555560
for (auto child : root->elements()) {
556561
child->accept(&eval);
557562
}
563+
eval.selectorStack.pop_back();
558564
eval.current = oldCurrent;
559565
root->isLoading = false;
560566

561567
for (auto child : sheet->root2->loaded->elements()) {
562-
if (eval.current->parent()) {
563-
eval.current->parent()->append(child);
568+
if (auto css = child->isaCssStyleRule()) {
569+
if (auto pr = eval.current->isaCssStyleRule()) {
570+
for (auto inner : css->elements()) {
571+
auto copy = SASS_MEMORY_COPY(css->selector());
572+
for (ComplexSelector* asd : copy->elements()) {
573+
asd->chroots(false);
574+
}
575+
// auto reduced1 = copy1->resolveParentSelectors(css->selector(), compiler, false);
576+
SelectorListObj resolved = copy->resolveParentSelectors(pr->selector(), compiler, true);
577+
auto newRule = SASS_MEMORY_NEW(CssStyleRule, css->pstate(), eval.current, resolved, { inner });
578+
eval.current->parent()->append(newRule);
579+
}
580+
}
581+
else {
582+
if (eval.current) eval.current->append(child);
583+
}
564584
}
565585
else {
566-
eval.current->append(child);
586+
if (eval.current) eval.current->append(child);
567587
}
568588
}
569589

0 commit comments

Comments
 (0)