diff options
author | drh <> | 2023-02-25 12:50:54 +0000 |
---|---|---|
committer | drh <> | 2023-02-25 12:50:54 +0000 |
commit | 0f8aebbfcf5b4d63208ff336bca5df7ed8f9bbb5 (patch) | |
tree | 651750b254819352512418024c905015fe5a3b3a /src/printf.c | |
parent | 96705c1d7a8d135dc2d9863d1cb2584d192c8e89 (diff) | |
download | sqlite-0f8aebbfcf5b4d63208ff336bca5df7ed8f9bbb5.tar.gz sqlite-0f8aebbfcf5b4d63208ff336bca5df7ed8f9bbb5.zip |
Performance optimization on sqlite3_vsnprintf().
FossilOrigin-Name: 4430e6e96dbf3d0b464776c132838dd3e456716e0ae5972fc7e0ece13b56ea25
Diffstat (limited to 'src/printf.c')
-rw-r--r-- | src/printf.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/printf.c b/src/printf.c index 45a31ec8d..b222cb214 100644 --- a/src/printf.c +++ b/src/printf.c @@ -1361,12 +1361,22 @@ char *sqlite3_vsnprintf(int n, char *zBuf, const char *zFormat, va_list ap){ return zBuf; } char *sqlite3_snprintf(int n, char *zBuf, const char *zFormat, ...){ - char *z; + StrAccum acc; va_list ap; + if( n<=0 ) return zBuf; +#ifdef SQLITE_ENABLE_API_ARMOR + if( zBuf==0 || zFormat==0 ) { + (void)SQLITE_MISUSE_BKPT; + if( zBuf ) zBuf[0] = 0; + return zBuf; + } +#endif + sqlite3StrAccumInit(&acc, 0, zBuf, n, 0); va_start(ap,zFormat); - z = sqlite3_vsnprintf(n, zBuf, zFormat, ap); + sqlite3_str_vappendf(&acc, zFormat, ap); va_end(ap); - return z; + zBuf[acc.nChar] = 0; + return zBuf; } /* |