From bd150b54afedce3362226600c249f74de30a2291 Mon Sep 17 00:00:00 2001 From: Stephen Sykes Date: Wed, 22 Feb 2017 23:47:56 +0200 Subject: [PATCH] Fix parsing for svg with longer preamble --- lib/fastimage.rb | 15 +++++++++++++-- test/fixtures/test2.svg | 1 + test/test.rb | 3 ++- 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/test2.svg diff --git a/lib/fastimage.rb b/lib/fastimage.rb index 7486d9f..106cf2e 100644 --- a/lib/fastimage.rb +++ b/lib/fastimage.rb @@ -60,6 +60,7 @@ require 'pathname' require 'zlib' require 'base64' require 'uri' +require 'fiber' # see http://stackoverflow.com/questions/5208851/i/41048816#41048816 if RUBY_VERSION < "2.2" @@ -417,6 +418,7 @@ class FastImage @str = '' end + # Peeking beyond the end of the input will raise def peek(n) while @strpos + n - 1 >= @str.size unused_str = @str[@strpos..-1] @@ -488,7 +490,14 @@ class FastImage when "" state = :stop if state == :started else - state = :started if attr_name.join == "svg" + state = :started if attr_name.join == " diff --git a/test/test.rb b/test/test.rb index 12c9630..f58d327 100644 --- a/test/test.rb +++ b/test/test.rb @@ -33,7 +33,8 @@ GoodFixtures = { "webp_vp8l.webp" => [:webp, [386, 395]], "webp_vp8.webp" => [:webp, [550, 368]], "test.svg" => [:svg, [200, 300]], - "test_partial_viewport.svg" => [:svg, [860, 400]] + "test_partial_viewport.svg" => [:svg, [860, 400]], + "test2.svg" => [:svg, [366, 271]] } BadFixtures = [