diff --git a/common/src/app/common/data.cljc b/common/src/app/common/data.cljc index ee7bd560e..874ee56b9 100644 --- a/common/src/app/common/data.cljc +++ b/common/src/app/common/data.cljc @@ -584,17 +584,20 @@ (assert (string? basename)) (assert (set? used)) - (let [[prefix initial] (extract-numeric-suffix basename)] - (if (and (not prefix-first?) - (not (contains? used basename))) - basename - (loop [counter initial] - (let [candidate (if (and (= 1 counter) prefix-first?) - (str prefix) - (str prefix "-" counter))] - (if (contains? used candidate) - (recur (inc counter)) - candidate))))))) + (if (> (count basename) 1000) + ;; We skip generating names for long strings. If the name is too long the regex can hang + basename + (let [[prefix initial] (extract-numeric-suffix basename)] + (if (and (not prefix-first?) + (not (contains? used basename))) + basename + (loop [counter initial] + (let [candidate (if (and (= 1 counter) prefix-first?) + (str prefix) + (str prefix "-" counter))] + (if (contains? used candidate) + (recur (inc counter)) + candidate)))))))) (defn deep-mapm "Applies a map function to an associative map and recurses over its children diff --git a/frontend/src/app/util/import/parser.cljs b/frontend/src/app/util/import/parser.cljs index 28767b265..ba6a191a6 100644 --- a/frontend/src/app/util/import/parser.cljs +++ b/frontend/src/app/util/import/parser.cljs @@ -811,7 +811,7 @@ :attrs) image-data (get-svg-data :image node) svg-data (or image-data pattern-data)] - (:xlink:href svg-data))) + (or (:href svg-data) (:xlink:href svg-data)))) (defn get-image-fill [node]