Fossil SCM
When reporting database errors in CGI mode, make sure the CGI header comes out first.
Commit
3dce979214cc309749697d2982c77fac896ebada
Parent
d53af79c81d3ccf…
1 file changed
+4
-4
M
src/db.c
+4
-4
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -65,12 +65,12 @@ | ||
| 65 | 65 | va_start(ap, zFormat); |
| 66 | 66 | z = vmprintf(zFormat, ap); |
| 67 | 67 | va_end(ap); |
| 68 | 68 | if( g.cgiPanic ){ |
| 69 | 69 | g.cgiPanic = 0; |
| 70 | - cgi_printf("<p><font color=\"red\">%h</font></p>", z); | |
| 71 | - style_footer(); | |
| 70 | + cgi_printf("<h1>Database Error</h1>\n" | |
| 71 | + "<pre>%h</pre>", z); | |
| 72 | 72 | cgi_reply(); |
| 73 | 73 | }else{ |
| 74 | 74 | fprintf(stderr, "%s: %s\n", g.argv[0], z); |
| 75 | 75 | } |
| 76 | 76 | db_force_rollback(); |
| @@ -177,11 +177,11 @@ | ||
| 177 | 177 | blob_zero(&pStmt->sql); |
| 178 | 178 | blob_vappendf(&pStmt->sql, zFormat, ap); |
| 179 | 179 | va_end(ap); |
| 180 | 180 | zSql = blob_str(&pStmt->sql); |
| 181 | 181 | if( sqlite3_prepare_v2(g.db, zSql, -1, &pStmt->pStmt, 0)!=0 ){ |
| 182 | - db_err("%s\n%s", zSql, sqlite3_errmsg(g.db)); | |
| 182 | + db_err("%s\n%s", sqlite3_errmsg(g.db), zSql); | |
| 183 | 183 | } |
| 184 | 184 | pStmt->pNext = pStmt->pPrev = 0; |
| 185 | 185 | return 0; |
| 186 | 186 | } |
| 187 | 187 | int db_prepare(Stmt *pStmt, const char *zFormat, ...){ |
| @@ -211,11 +211,11 @@ | ||
| 211 | 211 | ** Return the index of a bind parameter |
| 212 | 212 | */ |
| 213 | 213 | static int paramIdx(Stmt *pStmt, const char *zParamName){ |
| 214 | 214 | int i = sqlite3_bind_parameter_index(pStmt->pStmt, zParamName); |
| 215 | 215 | if( i==0 ){ |
| 216 | - db_err("no such bind parameter: %s\n%b", zParamName, &pStmt->sql); | |
| 216 | + db_err("no such bind parameter: %s\nSQL: %b", zParamName, &pStmt->sql); | |
| 217 | 217 | } |
| 218 | 218 | return i; |
| 219 | 219 | } |
| 220 | 220 | /* |
| 221 | 221 | ** Bind an integer, string, or Blob value to a named parameter. |
| 222 | 222 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -65,12 +65,12 @@ | |
| 65 | va_start(ap, zFormat); |
| 66 | z = vmprintf(zFormat, ap); |
| 67 | va_end(ap); |
| 68 | if( g.cgiPanic ){ |
| 69 | g.cgiPanic = 0; |
| 70 | cgi_printf("<p><font color=\"red\">%h</font></p>", z); |
| 71 | style_footer(); |
| 72 | cgi_reply(); |
| 73 | }else{ |
| 74 | fprintf(stderr, "%s: %s\n", g.argv[0], z); |
| 75 | } |
| 76 | db_force_rollback(); |
| @@ -177,11 +177,11 @@ | |
| 177 | blob_zero(&pStmt->sql); |
| 178 | blob_vappendf(&pStmt->sql, zFormat, ap); |
| 179 | va_end(ap); |
| 180 | zSql = blob_str(&pStmt->sql); |
| 181 | if( sqlite3_prepare_v2(g.db, zSql, -1, &pStmt->pStmt, 0)!=0 ){ |
| 182 | db_err("%s\n%s", zSql, sqlite3_errmsg(g.db)); |
| 183 | } |
| 184 | pStmt->pNext = pStmt->pPrev = 0; |
| 185 | return 0; |
| 186 | } |
| 187 | int db_prepare(Stmt *pStmt, const char *zFormat, ...){ |
| @@ -211,11 +211,11 @@ | |
| 211 | ** Return the index of a bind parameter |
| 212 | */ |
| 213 | static int paramIdx(Stmt *pStmt, const char *zParamName){ |
| 214 | int i = sqlite3_bind_parameter_index(pStmt->pStmt, zParamName); |
| 215 | if( i==0 ){ |
| 216 | db_err("no such bind parameter: %s\n%b", zParamName, &pStmt->sql); |
| 217 | } |
| 218 | return i; |
| 219 | } |
| 220 | /* |
| 221 | ** Bind an integer, string, or Blob value to a named parameter. |
| 222 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -65,12 +65,12 @@ | |
| 65 | va_start(ap, zFormat); |
| 66 | z = vmprintf(zFormat, ap); |
| 67 | va_end(ap); |
| 68 | if( g.cgiPanic ){ |
| 69 | g.cgiPanic = 0; |
| 70 | cgi_printf("<h1>Database Error</h1>\n" |
| 71 | "<pre>%h</pre>", z); |
| 72 | cgi_reply(); |
| 73 | }else{ |
| 74 | fprintf(stderr, "%s: %s\n", g.argv[0], z); |
| 75 | } |
| 76 | db_force_rollback(); |
| @@ -177,11 +177,11 @@ | |
| 177 | blob_zero(&pStmt->sql); |
| 178 | blob_vappendf(&pStmt->sql, zFormat, ap); |
| 179 | va_end(ap); |
| 180 | zSql = blob_str(&pStmt->sql); |
| 181 | if( sqlite3_prepare_v2(g.db, zSql, -1, &pStmt->pStmt, 0)!=0 ){ |
| 182 | db_err("%s\n%s", sqlite3_errmsg(g.db), zSql); |
| 183 | } |
| 184 | pStmt->pNext = pStmt->pPrev = 0; |
| 185 | return 0; |
| 186 | } |
| 187 | int db_prepare(Stmt *pStmt, const char *zFormat, ...){ |
| @@ -211,11 +211,11 @@ | |
| 211 | ** Return the index of a bind parameter |
| 212 | */ |
| 213 | static int paramIdx(Stmt *pStmt, const char *zParamName){ |
| 214 | int i = sqlite3_bind_parameter_index(pStmt->pStmt, zParamName); |
| 215 | if( i==0 ){ |
| 216 | db_err("no such bind parameter: %s\nSQL: %b", zParamName, &pStmt->sql); |
| 217 | } |
| 218 | return i; |
| 219 | } |
| 220 | /* |
| 221 | ** Bind an integer, string, or Blob value to a named parameter. |
| 222 |