Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Further improvements to the fossil_panic() procedure to prevent it from looping and to force an early close of the database file. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
9d73d4c127fc8cf0fc9bbe86a725ebf6 |
| User & Date: | drh 2013-08-30 06:41:05.981 |
Context
|
2013-08-30
| ||
| 12:18 | Add the --errorlog command-line option and the errorlog: parameter to CGI scripts. Log all panics, fatal errors, and warnings to the error log, if defined. Panic if file descriptor 2 is not open on unix. Clean up some routines that deal with close(). check-in: 4727ef4a8e user: drh tags: trunk | |
| 06:41 | Further improvements to the fossil_panic() procedure to prevent it from looping and to force an early close of the database file. check-in: 9d73d4c127 user: drh tags: trunk | |
| 06:22 | Update SQLite to the version that avoids opening databases on file descriptor 2 and that works inside a chroot jail. Fix a potential uninitialized variable in the CGI processing. check-in: 98b16c72c7 user: drh tags: trunk | |
Changes
Changes to src/printf.c.
| ︙ | ︙ | |||
920 921 922 923 924 925 926 |
** Print an error message, rollback all databases, and quit. These
** routines never return.
*/
NORETURN void fossil_panic(const char *zFormat, ...){
va_list ap;
int rc = 1;
char z[1000];
| | | < | < > | < | | 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 |
** Print an error message, rollback all databases, and quit. These
** routines never return.
*/
NORETURN void fossil_panic(const char *zFormat, ...){
va_list ap;
int rc = 1;
char z[1000];
static int once = 0;
if( once ) exit(1);
once = 1;
mainInFatalError = 1;
db_force_rollback();
va_start(ap, zFormat);
sqlite3_vsnprintf(sizeof(z),z,zFormat, ap);
va_end(ap);
#ifdef FOSSIL_ENABLE_JSON
if( g.json.isJsonMode ){
json_err( 0, z, 1 );
if( g.isHTTP ){
rc = 0 /* avoid HTTP 500 */;
}
}
else
#endif
{
if( g.cgiOutput ){
cgi_printf("<p class=\"generalError\">%h</p>", z);
cgi_reply();
}else if( !g.fQuiet ){
fossil_force_newline();
fossil_puts("Fossil internal error: ", 1);
fossil_puts(z, 1);
fossil_puts("\n", 1);
}
}
exit(rc);
}
NORETURN void fossil_fatal(const char *zFormat, ...){
char *z;
int rc = 1;
va_list ap;
mainInFatalError = 1;
|
| ︙ | ︙ |