From 9e69a284e162fa1ea5649a795805657de5716389 Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Thu, 23 Jun 2022 13:07:02 +0200 Subject: [PATCH] [#148] [Fix] `tools/freeze` should use *freeze-opts* even for unwrapped vals --- src/taoensso/nippy/tools.clj | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/taoensso/nippy/tools.clj b/src/taoensso/nippy/tools.clj index 2315f17..2d39cba 100644 --- a/src/taoensso/nippy/tools.clj +++ b/src/taoensso/nippy/tools.clj @@ -22,25 +22,26 @@ (if (= (.-opts x) opts) x (WrappedForFreezing. (.-val x) opts))) - (WrappedForFreezing. x opts)))) + (WrappedForFreezing. x opts)))) (defn freeze "Like `nippy/freeze` but merges opts from *freeze-opts*, `wrap-for-freezing`." ([x ] (freeze x nil)) ([x default-opts] - (let [;; For back compatibility: - default-opts (get default-opts :default-opts default-opts)] + (let [default-opts (get default-opts :default-opts default-opts) ; For back compatibility + merged-opts (conj (or default-opts {}) *freeze-opts*)] + (if (instance? WrappedForFreezing x) (let [^WrappedForFreezing x x] - (nippy/freeze (.-val x) (merge default-opts *freeze-opts* (.-opts x)))) - (nippy/freeze x default-opts))))) + (nippy/freeze (.-val x) (conj merged-opts (.-opts x)))) + (nippy/freeze x merged-opts))))) (defn thaw "Like `nippy/thaw` but merges opts from `*thaw-opts*`." ([ba ] (thaw ba nil)) ([ba default-opts] - (let [;; For back compatibility: - default-opts (get default-opts :default-opts default-opts)] - (nippy/thaw ba (merge default-opts *thaw-opts*))))) + (let [default-opts (get default-opts :default-opts default-opts) ; For back compatibility + merged-opts (conj (or default-opts {}) *thaw-opts*)] + (nippy/thaw ba merged-opts)))) (comment (thaw (freeze (wrap-for-freezing "wrapped"))))