From c2e18c41a30866bcc930e537a05680abb35d82fd Mon Sep 17 00:00:00 2001 From: Roman Rizzi Date: Tue, 3 Jan 2023 15:27:05 -0300 Subject: [PATCH] FIX: Check that the node has a src attr when getting size (#19696) --- lib/cooked_processor_mixin.rb | 2 +- spec/lib/cooked_post_processor_spec.rb | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/cooked_processor_mixin.rb b/lib/cooked_processor_mixin.rb index cf4885788d5..68add8893fa 100644 --- a/lib/cooked_processor_mixin.rb +++ b/lib/cooked_processor_mixin.rb @@ -149,7 +149,7 @@ module CookedProcessorMixin return unless image_sizes.present? image_sizes.each do |image_size| url, size = image_size[0], image_size[1] - if url && url.include?(src) && + if url && src && url.include?(src) && size && size["width"].to_i > 0 && size["height"].to_i > 0 return [size["width"], size["height"]] end diff --git a/spec/lib/cooked_post_processor_spec.rb b/spec/lib/cooked_post_processor_spec.rb index 26f1eaededc..c703ea1909e 100644 --- a/spec/lib/cooked_post_processor_spec.rb +++ b/spec/lib/cooked_post_processor_spec.rb @@ -870,10 +870,17 @@ RSpec.describe CookedPostProcessor do let(:post) { build(:post) } let(:cpp) { CookedPostProcessor.new(post) } + let(:image_sizes) do + { "http://my.discourse.org/image.png" => { "width" => 111, "height" => 222 } } + end + it "returns the size" do - image_sizes = { "http://my.discourse.org/image.png" => { "width" => 111, "height" => 222 } } expect(cpp.get_size_from_image_sizes("/image.png", image_sizes)).to eq([111, 222]) end + + it "returns nil whe img node has no src" do + expect(cpp.get_size_from_image_sizes(nil, image_sizes)).to eq(nil) + end end describe "#get_size" do