Fossil SCM

When reporting database errors in CGI mode, make sure the CGI header comes out first.

drh 2008-05-24 13:30 trunk
Commit 3dce979214cc309749697d2982c77fac896ebada
1 file changed +4 -4
+4 -4
--- src/db.c
+++ src/db.c
@@ -65,12 +65,12 @@
6565
va_start(ap, zFormat);
6666
z = vmprintf(zFormat, ap);
6767
va_end(ap);
6868
if( g.cgiPanic ){
6969
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);
7272
cgi_reply();
7373
}else{
7474
fprintf(stderr, "%s: %s\n", g.argv[0], z);
7575
}
7676
db_force_rollback();
@@ -177,11 +177,11 @@
177177
blob_zero(&pStmt->sql);
178178
blob_vappendf(&pStmt->sql, zFormat, ap);
179179
va_end(ap);
180180
zSql = blob_str(&pStmt->sql);
181181
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);
183183
}
184184
pStmt->pNext = pStmt->pPrev = 0;
185185
return 0;
186186
}
187187
int db_prepare(Stmt *pStmt, const char *zFormat, ...){
@@ -211,11 +211,11 @@
211211
** Return the index of a bind parameter
212212
*/
213213
static int paramIdx(Stmt *pStmt, const char *zParamName){
214214
int i = sqlite3_bind_parameter_index(pStmt->pStmt, zParamName);
215215
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);
217217
}
218218
return i;
219219
}
220220
/*
221221
** Bind an integer, string, or Blob value to a named parameter.
222222
--- 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

Keyboard Shortcuts

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