<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -575,11 +575,16 @@ module Sinatra
 
     # Find an custom error block for the key(s) specified.
     def error_block!(*keys)
-      errmap = self.class.errors
       keys.each do |key|
-        if block = errmap[key]
-          res = instance_eval(&amp;block)
-          return res
+        base = self.class
+        while base.respond_to?(:errors)
+          if block = base.errors[key]
+            # found a handler, eval and return result
+            res = instance_eval(&amp;block)
+            return res
+          else
+            base = base.superclass
+          end
         end
       end
       nil
@@ -900,7 +905,7 @@ module Sinatra
         @templates  = {}
         @conditions = []
         @filters    = []
-        @errors     = base.errors.dup
+        @errors     = {}
         @middleware = base.middleware.dup
         @prototype  = nil
         @extensions = []</diff>
      <filename>lib/sinatra/base.rb</filename>
    </modified>
    <modified>
      <diff>@@ -101,6 +101,37 @@ class MappedErrorTest &lt; Test::Unit::TestCase
       assert_equal 404, status
       assert_equal &quot;Lost, are we?&quot;, body
     end
+
+    it 'inherits error mappings from base class' do
+      base = Class.new(Sinatra::Base)
+      base.error(FooError) { 'base class' }
+
+      mock_app(base) {
+        set :raise_errors, false
+        get '/' do
+          raise FooError
+        end
+      }
+
+      get '/'
+      assert_equal 'base class', body
+    end
+
+    it 'overrides error mappings in base class' do
+      base = Class.new(Sinatra::Base)
+      base.error(FooError) { 'base class' }
+
+      mock_app(base) {
+        set :raise_errors, false
+        error(FooError) { 'subclass' }
+        get '/' do
+          raise FooError
+        end
+      }
+
+      get '/'
+      assert_equal 'subclass', body
+    end
   end
 
   describe 'Custom Error Pages' do</diff>
      <filename>test/mapped_error_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>4de90276a0b5dcfa42b8378fb2a2f1153087fb75</id>
    </parent>
  </parents>
  <author>
    <name>Ryan Tomayko</name>
    <email>rtomayko@gmail.com</email>
  </author>
  <url>http://github.com/bmizerany/sinatra/commit/5c405a76d1e9e65e41b728abc82bc7a1402986c1</url>
  <id>5c405a76d1e9e65e41b728abc82bc7a1402986c1</id>
  <committed-date>2009-06-07T04:12:20-07:00</committed-date>
  <authored-date>2009-03-26T09:02:40-07:00</authored-date>
  <message>Better error mapping inheritance</message>
  <tree>8cda27f755309a4e8309cf8bbd9277bf46cfbc7b</tree>
  <committer>
    <name>Ryan Tomayko</name>
    <email>rtomayko@gmail.com</email>
  </committer>
</commit>
