Fossil SCM

For the BUILTIN virtual table, map one-based rowids to zero-based array indices, to fix access to the first entry.

florian 2022-10-18 13:34 trunk
Commit cf563c721773e652b5108e5e059b82cc15a2a6ed9409fcbae6751e608579de0b
1 file changed +2 -2
+2 -2
--- src/builtin.c
+++ src/builtin.c
@@ -484,11 +484,11 @@
484484
sqlite3_vtab_cursor *cur, /* The cursor */
485485
sqlite3_context *ctx, /* First argument to sqlite3_result_...() */
486486
int i /* Which column to return */
487487
){
488488
builtinVtab_cursor *pCur = (builtinVtab_cursor*)cur;
489
- const struct BuiltinFileTable *pFile = aBuiltinFiles + pCur->iRowid;
489
+ const struct BuiltinFileTable *pFile = aBuiltinFiles + pCur->iRowid - 1;
490490
switch( i ){
491491
case 0: /* name */
492492
sqlite3_result_text(ctx, pFile->zName, -1, SQLITE_STATIC);
493493
break;
494494
case 1: /* size */
@@ -515,11 +515,11 @@
515515
** Return TRUE if the cursor has been moved off of the last
516516
** row of output.
517517
*/
518518
static int builtinVtabEof(sqlite3_vtab_cursor *cur){
519519
builtinVtab_cursor *pCur = (builtinVtab_cursor*)cur;
520
- return pCur->iRowid>=count(aBuiltinFiles);
520
+ return pCur->iRowid>count(aBuiltinFiles);
521521
}
522522
523523
/*
524524
** This method is called to "rewind" the builtinVtab_cursor object back
525525
** to the first row of output. This method is always called at least
526526
--- src/builtin.c
+++ src/builtin.c
@@ -484,11 +484,11 @@
484 sqlite3_vtab_cursor *cur, /* The cursor */
485 sqlite3_context *ctx, /* First argument to sqlite3_result_...() */
486 int i /* Which column to return */
487 ){
488 builtinVtab_cursor *pCur = (builtinVtab_cursor*)cur;
489 const struct BuiltinFileTable *pFile = aBuiltinFiles + pCur->iRowid;
490 switch( i ){
491 case 0: /* name */
492 sqlite3_result_text(ctx, pFile->zName, -1, SQLITE_STATIC);
493 break;
494 case 1: /* size */
@@ -515,11 +515,11 @@
515 ** Return TRUE if the cursor has been moved off of the last
516 ** row of output.
517 */
518 static int builtinVtabEof(sqlite3_vtab_cursor *cur){
519 builtinVtab_cursor *pCur = (builtinVtab_cursor*)cur;
520 return pCur->iRowid>=count(aBuiltinFiles);
521 }
522
523 /*
524 ** This method is called to "rewind" the builtinVtab_cursor object back
525 ** to the first row of output. This method is always called at least
526
--- src/builtin.c
+++ src/builtin.c
@@ -484,11 +484,11 @@
484 sqlite3_vtab_cursor *cur, /* The cursor */
485 sqlite3_context *ctx, /* First argument to sqlite3_result_...() */
486 int i /* Which column to return */
487 ){
488 builtinVtab_cursor *pCur = (builtinVtab_cursor*)cur;
489 const struct BuiltinFileTable *pFile = aBuiltinFiles + pCur->iRowid - 1;
490 switch( i ){
491 case 0: /* name */
492 sqlite3_result_text(ctx, pFile->zName, -1, SQLITE_STATIC);
493 break;
494 case 1: /* size */
@@ -515,11 +515,11 @@
515 ** Return TRUE if the cursor has been moved off of the last
516 ** row of output.
517 */
518 static int builtinVtabEof(sqlite3_vtab_cursor *cur){
519 builtinVtab_cursor *pCur = (builtinVtab_cursor*)cur;
520 return pCur->iRowid>count(aBuiltinFiles);
521 }
522
523 /*
524 ** This method is called to "rewind" the builtinVtab_cursor object back
525 ** to the first row of output. This method is always called at least
526

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button