<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -492,10 +492,9 @@ module EXIFR
       attr_reader :short, :long
 
       def initialize(file)
-        @file = file.respond_to?(:read) ? file : File.open(file, &quot;rb&quot;)
-        @buff = []
+        @file = file.respond_to?(:read) ? file : File.open(file, 'rb')
+        @buffer = ''
         @pos = 0
-        @size = 0
 
         case self[0..1]
         when 'II'; @short, @long = 'v', 'V'
@@ -505,20 +504,15 @@ module EXIFR
       end
 
       def [](pos)
-        # handle Ranges
-        if (pos.respond_to?(:min) and pos.respond_to?(:max))
-          min = pos.min
-          max = pos.max
-        else
-          min = pos
-          max = pos
+        unless pos.respond_to?(:begin) &amp;&amp; pos.respond_to?(:end)
+          pos = pos..pos
         end
 
-        if (min &lt; @pos or max &gt;= @pos + @size)
-          buff_read(min, max - min)
+        if pos.begin &lt; @pos || pos.end &gt;= @pos + @buffer.size
+          read_for(pos)
         end
 
-        return @buffer[(min - @pos)..(max - @pos)]
+        @buffer[(pos.begin - @pos)..(pos.end - @pos)]
       end
 
       def readshort(pos)
@@ -531,17 +525,13 @@ module EXIFR
 
       def size
         @file.seek(0, IO::SEEK_END)
-        return @file.pos
+        @file.pos
       end
 
-      private
-      def buff_read(pos, size)
-        @pos = pos
-        @size = size &lt; 4096? 4096 : size;
-        @file.seek(pos)
-        @buffer = @file.read(@size)
-        # read can read less then the requested size
-        @size = @buffer.size
+    private
+      def read_for(pos)
+        @file.seek(@pos = pos.begin)
+        @buffer = @file.read([pos.end - pos.begin, 4096].max)
       end
     end
   end</diff>
      <filename>lib/tiff.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>5355d7eb825dc5240fc690ac0509f5971404379b</id>
    </parent>
  </parents>
  <author>
    <name>Remco van 't Veer</name>
    <email>rwvtveer@xs4all.nl</email>
  </author>
  <url>http://github.com/remvee/exifr/commit/563672c04cc82d413df51b1c00f7648bee3d5113</url>
  <id>563672c04cc82d413df51b1c00f7648bee3d5113</id>
  <committed-date>2009-02-23T00:59:50-08:00</committed-date>
  <authored-date>2009-02-23T00:59:50-08:00</authored-date>
  <message>style changes and performance enhancements</message>
  <tree>014d1903b6439f7db074edf23b7c9ae8ff16d474</tree>
  <committer>
    <name>Remco van 't Veer</name>
    <email>rwvtveer@xs4all.nl</email>
  </committer>
</commit>
