Fossil SCM
added a check for null document pointers in search_score that corrected search form crash
Commit
cad393d597a2309d4b6341183f609d6750c95b66
Parent
73d274360c6c9dd…
1 file changed
+3
-2
+3
-2
| --- src/search.c | ||
| +++ src/search.c | ||
| @@ -106,10 +106,11 @@ | ||
| 106 | 106 | int score = 10; |
| 107 | 107 | int iBonus = 0; |
| 108 | 108 | int i, j; |
| 109 | 109 | unsigned char seen[8]; |
| 110 | 110 | |
| 111 | + if (zDoc == 0) return 0; | |
| 111 | 112 | memset(seen, 0, sizeof(seen)); |
| 112 | 113 | for(i=0; zDoc[i]; i++){ |
| 113 | 114 | char c = zDoc[i]; |
| 114 | 115 | if( isBoundary[c&0xff] ) continue; |
| 115 | 116 | for(j=0; j<p->nTerm; j++){ |
| @@ -182,16 +183,16 @@ | ||
| 182 | 183 | int zScore; |
| 183 | 184 | int zSrchTypeFlag; |
| 184 | 185 | |
| 185 | 186 | Search *zSrchpat; |
| 186 | 187 | Stmt q; |
| 187 | - | |
| 188 | + | |
| 188 | 189 | zSrch = PD("search", ""); |
| 189 | 190 | zSrchType = PD("type", ""); |
| 190 | 191 | zSrchpat = search_init(zSrch); |
| 191 | 192 | search_sql_setup(zSrchpat); |
| 192 | - | |
| 193 | + | |
| 193 | 194 | login_check_credentials(); |
| 194 | 195 | |
| 195 | 196 | if( !g.okHistory ){ login_needed(); return; } |
| 196 | 197 | |
| 197 | 198 | db_prepare(&q, "SELECT type, rid, title, content, score(content) AS score FROM " |
| 198 | 199 |
| --- src/search.c | |
| +++ src/search.c | |
| @@ -106,10 +106,11 @@ | |
| 106 | int score = 10; |
| 107 | int iBonus = 0; |
| 108 | int i, j; |
| 109 | unsigned char seen[8]; |
| 110 | |
| 111 | memset(seen, 0, sizeof(seen)); |
| 112 | for(i=0; zDoc[i]; i++){ |
| 113 | char c = zDoc[i]; |
| 114 | if( isBoundary[c&0xff] ) continue; |
| 115 | for(j=0; j<p->nTerm; j++){ |
| @@ -182,16 +183,16 @@ | |
| 182 | int zScore; |
| 183 | int zSrchTypeFlag; |
| 184 | |
| 185 | Search *zSrchpat; |
| 186 | Stmt q; |
| 187 | |
| 188 | zSrch = PD("search", ""); |
| 189 | zSrchType = PD("type", ""); |
| 190 | zSrchpat = search_init(zSrch); |
| 191 | search_sql_setup(zSrchpat); |
| 192 | |
| 193 | login_check_credentials(); |
| 194 | |
| 195 | if( !g.okHistory ){ login_needed(); return; } |
| 196 | |
| 197 | db_prepare(&q, "SELECT type, rid, title, content, score(content) AS score FROM " |
| 198 |
| --- src/search.c | |
| +++ src/search.c | |
| @@ -106,10 +106,11 @@ | |
| 106 | int score = 10; |
| 107 | int iBonus = 0; |
| 108 | int i, j; |
| 109 | unsigned char seen[8]; |
| 110 | |
| 111 | if (zDoc == 0) return 0; |
| 112 | memset(seen, 0, sizeof(seen)); |
| 113 | for(i=0; zDoc[i]; i++){ |
| 114 | char c = zDoc[i]; |
| 115 | if( isBoundary[c&0xff] ) continue; |
| 116 | for(j=0; j<p->nTerm; j++){ |
| @@ -182,16 +183,16 @@ | |
| 183 | int zScore; |
| 184 | int zSrchTypeFlag; |
| 185 | |
| 186 | Search *zSrchpat; |
| 187 | Stmt q; |
| 188 | |
| 189 | zSrch = PD("search", ""); |
| 190 | zSrchType = PD("type", ""); |
| 191 | zSrchpat = search_init(zSrch); |
| 192 | search_sql_setup(zSrchpat); |
| 193 | |
| 194 | login_check_credentials(); |
| 195 | |
| 196 | if( !g.okHistory ){ login_needed(); return; } |
| 197 | |
| 198 | db_prepare(&q, "SELECT type, rid, title, content, score(content) AS score FROM " |
| 199 |