@@ -429,7 +429,9 @@ namespace Sass {
429
429
Map* mm = new (ctx.mem ) Map (m->pstate (),
430
430
m->length ());
431
431
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);
433
435
}
434
436
435
437
// check the evaluated keys aren't duplicates.
@@ -677,7 +679,7 @@ namespace Sass {
677
679
} else if (sass_value_get_tag (c_val) == SASS_WARNING) {
678
680
error (" warning in C function " + c->name () + " : " + sass_warning_get_message (c_val), c->pstate (), backtrace ());
679
681
}
680
- result = cval_to_astnode (c_val, ctx, backtrace (), c->pstate ());
682
+ result = cval_to_astnode (ctx. mem , c_val, ctx, backtrace (), c->pstate ());
681
683
682
684
exp.backtrace_stack .pop_back ();
683
685
sass_delete_value (c_args);
@@ -1269,46 +1271,46 @@ namespace Sass {
1269
1271
return str;
1270
1272
}
1271
1273
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)
1273
1275
{
1274
1276
using std::strlen;
1275
1277
using std::strcpy;
1276
1278
Expression* e = 0 ;
1277
1279
switch (sass_value_get_tag (v)) {
1278
1280
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));
1280
1282
} break ;
1281
1283
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));
1283
1285
} break ;
1284
1286
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));
1286
1288
} break ;
1287
1289
case SASS_STRING: {
1288
1290
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));
1290
1292
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));
1292
1294
}
1293
1295
} break ;
1294
1296
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));
1296
1298
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);
1298
1300
}
1299
1301
e = l;
1300
1302
} break ;
1301
1303
case SASS_MAP: {
1302
- Map* m = new (ctx. mem ) Map (pstate);
1304
+ Map* m = new (mem) Map (pstate);
1303
1305
for (size_t i = 0 , L = sass_map_get_length (v); i < L; ++i) {
1304
1306
*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));
1307
1309
}
1308
1310
e = m;
1309
1311
} break ;
1310
1312
case SASS_NULL: {
1311
- e = new (ctx. mem ) Null (pstate);
1313
+ e = new (mem) Null (pstate);
1312
1314
} break ;
1313
1315
case SASS_ERROR: {
1314
1316
error (" Error in C function: " + string (sass_error_get_message (v)), pstate, backtrace);
0 commit comments