diff --git a/app/services/inline_uploads.rb b/app/services/inline_uploads.rb
index 70cbbf96208..42f410d1c65 100644
--- a/app/services/inline_uploads.rb
+++ b/app/services/inline_uploads.rb
@@ -195,9 +195,9 @@ class InlineUploads
def self.match_img(markdown, external_src: false)
markdown.scan(/(<(?!img)[^<>]+\/?>)?(\n*)(([ ]*)
]+)>([ ]*))(\n*)/) do |match|
node = Nokogiri::HTML::fragment(match[2].strip).children[0]
- src = node.attributes["src"].value
+ src = node.attributes["src"]&.value
- if matched_uploads(src).present? || external_src
+ if src && (matched_uploads(src).present? || external_src)
text = node.attributes["alt"]&.value
width = node.attributes["width"]&.value
height = node.attributes["height"]&.value
diff --git a/spec/services/inline_uploads_spec.rb b/spec/services/inline_uploads_spec.rb
index 0ec00d0753c..4eb14959ce9 100644
--- a/spec/services/inline_uploads_spec.rb
+++ b/spec/services/inline_uploads_spec.rb
@@ -45,6 +45,20 @@ RSpec.describe InlineUploads do
expect(InlineUploads.process(md)).to eq(md)
end
+ it "should work with invalid img tags" do
+ md = <<~MD
+
+
+ This is an invalid `
` tag
+ MD
+
+ expect(InlineUploads.process(md)).to eq(<<~MD)
+ 
+
+ This is an invalid `
` tag
+ MD
+ end
+
it "should not correct code blocks" do
md = "`In Code Block`"