From e52739c32fb6c6611ed690b9daf856925d8a1cf5 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Sun, 12 Dec 2021 07:22:44 +0100 Subject: [PATCH] Make with-sqlite-transaction mode code efficient * lisp/sqlite.el (with-sqlite-transaction): Rewrite to only include BODY once. --- lisp/sqlite.el | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lisp/sqlite.el b/lisp/sqlite.el index dccdda16ac0..6d32a0468f3 100644 --- a/lisp/sqlite.el +++ b/lisp/sqlite.el @@ -26,16 +26,17 @@ (defmacro with-sqlite-transaction (db &rest body) "Execute BODY while holding a transaction for DB." (declare (indent 1) (debug (form body))) - (let ((db-var (gensym))) - `(let ((,db-var ,db)) + (let ((db-var (gensym)) + (func-var (gensym))) + `(let ((,db-var ,db) + (,func-var (lambda () ,@body))) (if (sqlite-available-p) (unwind-protect (progn (sqlite-transaction ,db-var) - ,@body) + (funcall ,func-var)) (sqlite-commit ,db-var)) - (progn - ,@body))))) + (funcall ,func-var))))) (provide 'sqlite) -- 2.39.5