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

Commit 3a07c14

Browse files
committed
Merge pull request #833 from xzyfer/feat/pass-func-args-by-value
Pass arguments by value not reference
2 parents 196e12f + 65f51d0 commit 3a07c14

1 file changed

Lines changed: 17 additions & 5 deletions

File tree

eval.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -599,14 +599,26 @@ namespace Sass {
599599

600600
// behave according to as ruby sass (add leading zero)
601601
if (value->concrete_type() == Expression::NUMBER) {
602-
Number* n = static_cast<Number*>(value);
603-
value = new (ctx.mem) Number(*n);
602+
value = new (ctx.mem) Number(*static_cast<Number*>(value));
604603
static_cast<Number*>(value)->zero(true);
605604
}
606605
else if (value->concrete_type() == Expression::STRING) {
607-
String_Constant* s = static_cast<String_Constant*>(value);
608-
value = new (ctx.mem) String_Constant(s->pstate(),
609-
s->value());
606+
value = new (ctx.mem) String_Constant(*static_cast<String_Constant*>(value));
607+
}
608+
else if (value->concrete_type() == Expression::LIST) {
609+
value = new (ctx.mem) List(*static_cast<List*>(value));
610+
}
611+
else if (value->concrete_type() == Expression::MAP) {
612+
value = new (ctx.mem) Map(*static_cast<Map*>(value));
613+
}
614+
else if (value->concrete_type() == Expression::BOOLEAN) {
615+
value = new (ctx.mem) Boolean(*static_cast<Boolean*>(value));
616+
}
617+
else if (value->concrete_type() == Expression::COLOR) {
618+
value = new (ctx.mem) Color(*static_cast<Color*>(value));
619+
}
620+
else if (value->concrete_type() == Expression::NULL_VAL) {
621+
value = new (ctx.mem) Null(value->pstate());
610622
}
611623

612624
// cerr << "\ttype is now: " << typeid(*value).name() << endl << endl;

0 commit comments

Comments
 (0)