Skip to content

Commit

Permalink
Intern symbols when passed to Eval extension method (thanks 2bt)
Browse files Browse the repository at this point in the history
git-svn-id: https://ironscheme.svn.codeplex.com/svn@113114 2327b42d-5241-43d6-9e2a-de5ac946f064
  • Loading branch information
leppie committed Mar 3, 2015
1 parent a87c1de commit 2716cab
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion IronScheme/IronScheme/RuntimeExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,15 @@ public static object EvalWithEnvironment(this string expr, string importspec, pa
for (int i = 0; i < args.Length; i++)
{
var arg = vars[i];
Builtins.SetSymbolValueFast(SymbolTable.StringToObject(arg), args[i]);
var rarg = args[i];

// intern symbols
if (rarg is SymbolId)
{
rarg = SymbolTable.Intern((SymbolId)rarg);
}

Builtins.SetSymbolValueFast(SymbolTable.StringToObject(arg), rarg);
assigns[i] = string.Format("(define {0} (symbol-value '{0}))", arg);
}

Expand Down

0 comments on commit 2716cab

Please sign in to comment.