<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -89,10 +89,11 @@ module Liquid
       when Liquid::Context
         args.shift
       when Hash
-        self.assigns.merge!(args.shift)
-        Context.new(assigns, registers, @rethrow_errors)
+        a = args.shift
+        assigns.each { |k,v| a[k] = v unless a.has_key?(k) }
+        Context.new(a, registers, @rethrow_errors)
       when nil
-        Context.new(assigns, registers, @rethrow_errors)
+        Context.new(assigns.dup, registers, @rethrow_errors)
       else
         raise ArgumentError, &quot;Expect Hash or Liquid::Context as parameter&quot;
       end</diff>
      <filename>lib/liquid/template.rb</filename>
    </modified>
    <modified>
      <diff>@@ -138,4 +138,23 @@ class VariableResolutionTest &lt; Test::Unit::TestCase
     assert_equal 'worked', template.render
   end
 
+  def test_reuse_parsed_template
+    template = Template.parse(%|{{ greeting }} {{ name }}|)
+    template.assigns['greeting'] = 'Goodbye'
+    assert_equal 'Hello Tobi', template.render('greeting' =&gt; 'Hello', 'name' =&gt; 'Tobi')
+    assert_equal 'Hello ', template.render('greeting' =&gt; 'Hello', 'unknown' =&gt; 'Tobi')
+    assert_equal 'Hello Brian', template.render('greeting' =&gt; 'Hello', 'name' =&gt; 'Brian')
+    assert_equal 'Goodbye Brian', template.render('name' =&gt; 'Brian')
+    assert_equal({'greeting'=&gt;'Goodbye'}, template.assigns)
+  end
+
+  def test_assigns_not_polluted_from_template
+    template = Template.parse(%|{{ test }}{% assign test = 'bar' %}{{ test }}|)
+    template.assigns['test'] = 'baz'
+    assert_equal 'bazbar', template.render
+    assert_equal 'bazbar', template.render
+    assert_equal 'foobar', template.render('test' =&gt; 'foo')
+    assert_equal 'bazbar', template.render
+  end
+
 end
\ No newline at end of file</diff>
      <filename>test/variable_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>678fdfdb8a314885db624c64476d70cb4c43490a</id>
    </parent>
  </parents>
  <author>
    <name>Brian Candler</name>
    <email>b.candler@pobox.com</email>
  </author>
  <url>http://github.com/tobi/liquid/commit/09c0b3b3916d44e3a31062161019247d9ef451b4</url>
  <id>09c0b3b3916d44e3a31062161019247d9ef451b4</id>
  <committed-date>2009-06-06T08:15:37-07:00</committed-date>
  <authored-date>2009-06-06T07:59:53-07:00</authored-date>
  <message>Allow template to be re-used without persisting assigns</message>
  <tree>1fa031c02f0fb3d9a9080fc46a1d749b458c93c7</tree>
  <committer>
    <name>Brian Candler</name>
    <email>b.candler@pobox.com</email>
  </committer>
</commit>
