From: Lars Ingebrigtsen Date: Sun, 12 Dec 2021 06:22:44 +0000 (+0100) Subject: Make with-sqlite-transaction mode code efficient X-Git-Tag: emacs-29.0.90~3597^2~7 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e52739c32fb6c6611ed690b9daf856925d8a1cf5;p=emacs.git Make with-sqlite-transaction mode code efficient * lisp/sqlite.el (with-sqlite-transaction): Rewrite to only include BODY once. --- 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)