From c2aac0f71eb4b3736928e3396cca063eaa63073b Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Fri, 13 Mar 2020 21:29:13 +0100 Subject: [PATCH] [fix] DocumentRegistry: only add provider once (#5947) Fixes . --- frontend/document/documentregistry.lua | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/frontend/document/documentregistry.lua b/frontend/document/documentregistry.lua index 0f0e2f400..847dd020f 100644 --- a/frontend/document/documentregistry.lua +++ b/frontend/document/documentregistry.lua @@ -121,13 +121,23 @@ function DocumentRegistry:getProviders(file) --- @todo some implementation based on mime types? for _, provider in ipairs(self.providers) do + local added = false local suffix = string.sub(file, -string.len(provider.extension) - 1) if string.lower(suffix) == "."..provider.extension then + for i, prov_prev in ipairs(providers) do + if prov_prev.provider == provider.provider then + if prov_prev.weight >= provider.weight then + added = true + else + table.remove(providers, i) + end + end + end -- if extension == provider.extension then -- stick highest weighted provider at the front - if #providers >= 1 and provider.weight > providers[1].weight then + if not added and #providers >= 1 and provider.weight > providers[1].weight then table.insert(providers, 1, provider) - else + elseif not added then table.insert(providers, provider) end end