Fossil SCM
Ensure that the pattern string for search is all lower-case, so that FTS5 keywords like NOT and AND cannot cause confusion and errors.
Commit
ec68aaf42536b4fb48614a66fcd8bb8de5f3e1d2a4c64f3c13a5fe9c6aef3336
Parent
bdc8b4a4064aa61…
1 file changed
+1
+1
| --- src/search.c | ||
| +++ src/search.c | ||
| @@ -1005,10 +1005,11 @@ | ||
| 1005 | 1005 | if( srchFlags==0 ) return; |
| 1006 | 1006 | sqlite3_create_function(g.db, "rank", 1, SQLITE_UTF8|SQLITE_INNOCUOUS, 0, |
| 1007 | 1007 | search_rank_sqlfunc, 0, 0); |
| 1008 | 1008 | for(i=0; zPat[i]; i++){ |
| 1009 | 1009 | if( (zPat[i]&0x80)==0 && !fossil_isalnum(zPat[i]) ) zPat[i] = ' '; |
| 1010 | + if( fossil_isupper(zPat[i]) ) zPat[i] = fossil_tolower(zPat[i]); | |
| 1010 | 1011 | } |
| 1011 | 1012 | for(i--; i>=0 && zPat[i]==' '; i--){} |
| 1012 | 1013 | if( i<0 ){ |
| 1013 | 1014 | fossil_free(zPat); |
| 1014 | 1015 | zPat = mprintf("\"\""); |
| 1015 | 1016 |
| --- src/search.c | |
| +++ src/search.c | |
| @@ -1005,10 +1005,11 @@ | |
| 1005 | if( srchFlags==0 ) return; |
| 1006 | sqlite3_create_function(g.db, "rank", 1, SQLITE_UTF8|SQLITE_INNOCUOUS, 0, |
| 1007 | search_rank_sqlfunc, 0, 0); |
| 1008 | for(i=0; zPat[i]; i++){ |
| 1009 | if( (zPat[i]&0x80)==0 && !fossil_isalnum(zPat[i]) ) zPat[i] = ' '; |
| 1010 | } |
| 1011 | for(i--; i>=0 && zPat[i]==' '; i--){} |
| 1012 | if( i<0 ){ |
| 1013 | fossil_free(zPat); |
| 1014 | zPat = mprintf("\"\""); |
| 1015 |
| --- src/search.c | |
| +++ src/search.c | |
| @@ -1005,10 +1005,11 @@ | |
| 1005 | if( srchFlags==0 ) return; |
| 1006 | sqlite3_create_function(g.db, "rank", 1, SQLITE_UTF8|SQLITE_INNOCUOUS, 0, |
| 1007 | search_rank_sqlfunc, 0, 0); |
| 1008 | for(i=0; zPat[i]; i++){ |
| 1009 | if( (zPat[i]&0x80)==0 && !fossil_isalnum(zPat[i]) ) zPat[i] = ' '; |
| 1010 | if( fossil_isupper(zPat[i]) ) zPat[i] = fossil_tolower(zPat[i]); |
| 1011 | } |
| 1012 | for(i--; i>=0 && zPat[i]==' '; i--){} |
| 1013 | if( i<0 ){ |
| 1014 | fossil_free(zPat); |
| 1015 | zPat = mprintf("\"\""); |
| 1016 |