diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2021-12-12 07:22:44 +0100 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2021-12-12 07:22:49 +0100 |
commit | e52739c32fb6c6611ed690b9daf856925d8a1cf5 (patch) | |
tree | a4f9dfdf23380ecf6b07fe81d33a3893e5425ee9 /lisp/sqlite.el | |
parent | 11b2dfca287dee4b4520d07e3ad6432870059100 (diff) | |
download | emacs-e52739c32fb6c6611ed690b9daf856925d8a1cf5.tar.gz |
Make with-sqlite-transaction mode code efficient
* lisp/sqlite.el (with-sqlite-transaction): Rewrite to only
include BODY once.
Diffstat (limited to 'lisp/sqlite.el')
-rw-r--r-- | lisp/sqlite.el | 11 |
1 files 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) |