aboutsummaryrefslogtreecommitdiffstats
path: root/src/sqlite.c
diff options
context:
space:
mode:
authorPo Lu2023-02-04 19:50:00 +0800
committerPo Lu2023-02-04 19:50:00 +0800
commitbfce0ce57fe0de11a6cbe3ff878a59dd2a0853d4 (patch)
treef2debd564fd963f17ff01f36e88c8276e25248d0 /src/sqlite.c
parent9ffb5c0cf3e97a6579b0d07f0d9952e13c0ff605 (diff)
parent0a95a81d8d36722ccf030a6194ecd953fc257a59 (diff)
downloademacs-bfce0ce57fe0de11a6cbe3ff878a59dd2a0853d4.tar.gz
emacs-bfce0ce57fe0de11a6cbe3ff878a59dd2a0853d4.zip
Merge remote-tracking branch 'origin/master' into feature/android
Diffstat (limited to 'src/sqlite.c')
-rw-r--r--src/sqlite.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/sqlite.c b/src/sqlite.c
index c96841e63f9..0361514766a 100644
--- a/src/sqlite.c
+++ b/src/sqlite.c
@@ -399,7 +399,7 @@ row_to_value (sqlite3_stmt *stmt)
399 int len = sqlite3_column_count (stmt); 399 int len = sqlite3_column_count (stmt);
400 Lisp_Object values = Qnil; 400 Lisp_Object values = Qnil;
401 401
402 for (int i = 0; i < len; ++i) 402 for (int i = len - 1; i >= 0; i--)
403 { 403 {
404 Lisp_Object v = Qnil; 404 Lisp_Object v = Qnil;
405 405
@@ -434,7 +434,7 @@ row_to_value (sqlite3_stmt *stmt)
434 values = Fcons (v, values); 434 values = Fcons (v, values);
435 } 435 }
436 436
437 return Fnreverse (values); 437 return values;
438} 438}
439 439
440static Lisp_Object 440static Lisp_Object
@@ -718,11 +718,15 @@ Only modules on Emacs' list of allowed modules can be loaded. */)
718#endif /* HAVE_SQLITE3_LOAD_EXTENSION */ 718#endif /* HAVE_SQLITE3_LOAD_EXTENSION */
719 719
720DEFUN ("sqlite-next", Fsqlite_next, Ssqlite_next, 1, 1, 0, 720DEFUN ("sqlite-next", Fsqlite_next, Ssqlite_next, 1, 1, 0,
721 doc: /* Return the next result set from SET. */) 721 doc: /* Return the next result set from SET.
722Return nil when the statement has finished executing successfully. */)
722 (Lisp_Object set) 723 (Lisp_Object set)
723{ 724{
724 check_sqlite (set, true); 725 check_sqlite (set, true);
725 726
727 if (XSQLITE (set)->eof)
728 return Qnil;
729
726 int ret = sqlite3_step (XSQLITE (set)->stmt); 730 int ret = sqlite3_step (XSQLITE (set)->stmt);
727 if (ret != SQLITE_ROW && ret != SQLITE_OK && ret != SQLITE_DONE) 731 if (ret != SQLITE_ROW && ret != SQLITE_OK && ret != SQLITE_DONE)
728 xsignal1 (Qsqlite_error, build_string (sqlite3_errmsg (XSQLITE (set)->db))); 732 xsignal1 (Qsqlite_error, build_string (sqlite3_errmsg (XSQLITE (set)->db)));