@@ -429,7 +429,9 @@ namespace Sass {
429429 Map* mm = new (ctx.mem ) Map (m->pstate (),
430430 m->length ());
431431 for (auto key : m->keys ()) {
432- *mm << std::make_pair (key->perform (this ), m->at (key)->perform (this ));;
432+ Expression* ex_key = key->perform (this );
433+ Expression* ex_val = m->at (key)->perform (this );
434+ *mm << std::make_pair (ex_key, ex_val);
433435 }
434436
435437 // check the evaluated keys aren't duplicates.
@@ -677,7 +679,7 @@ namespace Sass {
677679 } else if (sass_value_get_tag (c_val) == SASS_WARNING) {
678680 error (" warning in C function " + c->name () + " : " + sass_warning_get_message (c_val), c->pstate (), backtrace ());
679681 }
680- result = cval_to_astnode (c_val, ctx, backtrace (), c->pstate ());
682+ result = cval_to_astnode (ctx. mem , c_val, ctx, backtrace (), c->pstate ());
681683
682684 exp.backtrace_stack .pop_back ();
683685 sass_delete_value (c_args);
@@ -1269,46 +1271,46 @@ namespace Sass {
12691271 return str;
12701272 }
12711273
1272- Expression* cval_to_astnode (Sass_Value* v, Context& ctx, Backtrace* backtrace, ParserState pstate)
1274+ Expression* cval_to_astnode (Memory_Manager<AST_Node>& mem, union Sass_Value* v, Context& ctx, Backtrace* backtrace, ParserState pstate)
12731275 {
12741276 using std::strlen;
12751277 using std::strcpy;
12761278 Expression* e = 0 ;
12771279 switch (sass_value_get_tag (v)) {
12781280 case SASS_BOOLEAN: {
1279- e = new (ctx. mem ) Boolean (pstate, !!sass_boolean_get_value (v));
1281+ e = new (mem) Boolean (pstate, !!sass_boolean_get_value (v));
12801282 } break ;
12811283 case SASS_NUMBER: {
1282- e = new (ctx. mem ) Number (pstate, sass_number_get_value (v), sass_number_get_unit (v));
1284+ e = new (mem) Number (pstate, sass_number_get_value (v), sass_number_get_unit (v));
12831285 } break ;
12841286 case SASS_COLOR: {
1285- e = new (ctx. mem ) Color (pstate, sass_color_get_r (v), sass_color_get_g (v), sass_color_get_b (v), sass_color_get_a (v));
1287+ e = new (mem) Color (pstate, sass_color_get_r (v), sass_color_get_g (v), sass_color_get_b (v), sass_color_get_a (v));
12861288 } break ;
12871289 case SASS_STRING: {
12881290 if (sass_string_is_quoted (v))
1289- e = new (ctx. mem ) String_Quoted (pstate, sass_string_get_value (v));
1291+ e = new (mem) String_Quoted (pstate, sass_string_get_value (v));
12901292 else {
1291- e = new (ctx. mem ) String_Constant (pstate, sass_string_get_value (v));
1293+ e = new (mem) String_Constant (pstate, sass_string_get_value (v));
12921294 }
12931295 } break ;
12941296 case SASS_LIST: {
1295- List* l = new (ctx. mem ) List (pstate, sass_list_get_length (v), sass_list_get_separator (v));
1297+ List* l = new (mem) List (pstate, sass_list_get_length (v), sass_list_get_separator (v));
12961298 for (size_t i = 0 , L = sass_list_get_length (v); i < L; ++i) {
1297- *l << cval_to_astnode (sass_list_get_value (v, i), ctx, backtrace, pstate);
1299+ *l << cval_to_astnode (mem, sass_list_get_value (v, i), ctx, backtrace, pstate);
12981300 }
12991301 e = l;
13001302 } break ;
13011303 case SASS_MAP: {
1302- Map* m = new (ctx. mem ) Map (pstate);
1304+ Map* m = new (mem) Map (pstate);
13031305 for (size_t i = 0 , L = sass_map_get_length (v); i < L; ++i) {
13041306 *m << std::make_pair (
1305- cval_to_astnode (sass_map_get_key (v, i), ctx, backtrace, pstate),
1306- cval_to_astnode (sass_map_get_value (v, i), ctx, backtrace, pstate));
1307+ cval_to_astnode (mem, sass_map_get_key (v, i), ctx, backtrace, pstate),
1308+ cval_to_astnode (mem, sass_map_get_value (v, i), ctx, backtrace, pstate));
13071309 }
13081310 e = m;
13091311 } break ;
13101312 case SASS_NULL: {
1311- e = new (ctx. mem ) Null (pstate);
1313+ e = new (mem) Null (pstate);
13121314 } break ;
13131315 case SASS_ERROR: {
13141316 error (" Error in C function: " + string (sass_error_get_message (v)), pstate, backtrace);
0 commit comments