diff options
Diffstat (limited to 'src/sqlite.c')
| -rw-r--r-- | src/sqlite.c | 10 |
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 | ||
| 440 | static Lisp_Object | 440 | static 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 | ||
| 720 | DEFUN ("sqlite-next", Fsqlite_next, Ssqlite_next, 1, 1, 0, | 720 | DEFUN ("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. |
| 722 | Return 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))); |