Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Amplify the comment on renderLogMsg() that explains the problems associated with calling sqlite3_log() from deep within the memory allocator. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
a73d7128fbca8dde5e90bd46ee915e39 |
User & Date: | drh 2015-07-14 22:43:37.988 |
Context
2015-07-15
| ||
13:56 | Fix the fuzz3.test script so that it works with the new bulk pagecache allocation feature. (check-in: 829a2dbaf1 user: drh tags: trunk) | |
2015-07-14
| ||
22:43 | Amplify the comment on renderLogMsg() that explains the problems associated with calling sqlite3_log() from deep within the memory allocator. (check-in: a73d7128fb user: drh tags: trunk) | |
21:56 | Further refine FTS5 cleanup in Makefiles. (check-in: b53a95063c user: mistachkin tags: trunk) | |
Changes
Changes to ext/ota/sqlite3ota.h.
︙ | ︙ | |||
412 413 414 415 416 417 418 | ** VFS objects are not reference counted. If a VFS object is destroyed ** before all database handles that use it have been closed, the results ** are undefined. */ void sqlite3ota_destroy_vfs(const char *zName); #endif /* _SQLITE3OTA_H */ | < | 412 413 414 415 416 417 418 | ** VFS objects are not reference counted. If a VFS object is destroyed ** before all database handles that use it have been closed, the results ** are undefined. */ void sqlite3ota_destroy_vfs(const char *zName); #endif /* _SQLITE3OTA_H */ |
Changes to src/printf.c.
︙ | ︙ | |||
1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 | ** This is the routine that actually formats the sqlite3_log() message. ** We house it in a separate routine from sqlite3_log() to avoid using ** stack space on small-stack systems when logging is disabled. ** ** sqlite3_log() must render into a static buffer. It cannot dynamically ** allocate memory because it might be called while the memory allocator ** mutex is held. */ static void renderLogMsg(int iErrCode, const char *zFormat, va_list ap){ StrAccum acc; /* String accumulator */ char zMsg[SQLITE_PRINT_BUF_SIZE*3]; /* Complete log message */ sqlite3StrAccumInit(&acc, 0, zMsg, sizeof(zMsg), 0); sqlite3VXPrintf(&acc, 0, zFormat, ap); | > > > > > | 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 | ** This is the routine that actually formats the sqlite3_log() message. ** We house it in a separate routine from sqlite3_log() to avoid using ** stack space on small-stack systems when logging is disabled. ** ** sqlite3_log() must render into a static buffer. It cannot dynamically ** allocate memory because it might be called while the memory allocator ** mutex is held. ** ** sqlite3VXPrintf() might ask for *temporary* memory allocations for ** certain format characters (%q) or for very large precisions or widths. ** Care must be taken that any sqlite3_log() calls that occur while the ** memory mutex is held do not use these mechanisms. */ static void renderLogMsg(int iErrCode, const char *zFormat, va_list ap){ StrAccum acc; /* String accumulator */ char zMsg[SQLITE_PRINT_BUF_SIZE*3]; /* Complete log message */ sqlite3StrAccumInit(&acc, 0, zMsg, sizeof(zMsg), 0); sqlite3VXPrintf(&acc, 0, zFormat, ap); |
︙ | ︙ |