diff --git a/regex.go b/regex.go index 63e318a..d840f4b 100644 --- a/regex.go +++ b/regex.go @@ -364,6 +364,12 @@ func (pr *privateRegex) Close() (err error) { if pr == nil || pr.mod == nil { return nil } + defer func() { + modulePool.Put(pr.mod) + pr.mod = nil + runtime.SetFinalizer(pr, nil) + }() + err = pr.closeRegexPtrs() if nErr := pr.closeMatchPtr(); err == nil { err = nErr @@ -379,11 +385,6 @@ func (pr *privateRegex) Close() (err error) { err = nErr } } - if pr.mod != nil { - modulePool.Put(pr.mod) - pr.mod = nil - runtime.SetFinalizer(pr, nil) - } return err }