From: drh <> Date: Fri, 19 Jun 2026 22:57:44 +0000 (+0000) Subject: Use SQLITE_FINISH in a few places in the core, to help ensure that path is X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=7644162026177a82a030e55879b836e99c36e985;p=thirdparty%2Fsqlite.git Use SQLITE_FINISH in a few places in the core, to help ensure that path is well tested. FossilOrigin-Name: 7356bf3a813bcd9082a7fdef5e2cc38c7a0f142f0ef4c948f78e4dafa216c039 --- diff --git a/manifest b/manifest index 8d5ad117c5..3c3b0ff61f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Put\sthe\ssqlite3OomStr\ssingleton\sin\s"const"\sspace\sto\sensure\sthat\sit\sis\nnever\smodified.\s\sDoing\sso\sidentified\sa\slong-standing\sbug. -D 2026-06-19T22:17:09.719 +C Use\sSQLITE_FINISH\sin\sa\sfew\splaces\sin\sthe\score,\sto\shelp\sensure\sthat\spath\sis\nwell\stested. +D 2026-06-19T22:57:44.085 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -670,7 +670,7 @@ F mptest/multiwrite01.test dab5c5f8f9534971efce679152c5146da265222d F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b F sqlite3.1 1b9c24374a85dfc7eb8fa7c4266ee0db4f9609cceecfc5481cd8307e5af04366 F sqlite3.pc.in e6dee284fba59ef500092fdc1843df3be8433323a3733c91da96690a50a5b398 -F src/alter.c d7cbe4332a7a2c3a21ab58ee2609efade493f6ae78254613ada0759898629ee3 +F src/alter.c ff7f795c602751a574488780cfa1259f24cccbf32ddf2205b6283c0e6998ae50 F src/analyze.c 73162482c656187823217f4c00758c9ee13a420c8745bc542129e0279b792287 F src/attach.c c58278c7d2d954785591c4fde81669ec3e4d52f348c453b028a19ae8adf4f338 F src/auth.c b5ece4e1edccad082c0332fa0087df225473bae0feea9269f824312201377185 @@ -684,7 +684,7 @@ F src/build.c 09946336c3011c2ae2faccdf04e33336e1cd51fd836651be0cd7eb5814f7f6a0 F src/callback.c 3605bbf02bd7ed46c79cd48346db4a32fc51d67624400539c0532f4eead804ad F src/carray.c 3efe3982d5fb323334c29328a4e189ccaef6b95612a6084ad5fa124fd5db1179 F src/complete.c f216b970ce99c5a657556cf1f17e7ddd494515d3beb63df426bf59ff43bd3d9a -F src/date.c 34920375bc8f184ad78533fcdc8aface90ba7c1c9d67c8ef6a2bfabca0d1f41d +F src/date.c 86d9530729eeb5b3d833e7403de495f4d4b79f3d5f7e74bcc8abda237f5aeafb F src/dbpage.c c6a9de13b0a01f0bc94a41e16213ab1ecd15ccfe86df7255ced40fda9446257d F src/dbstat.c 73362c0df0f40ad5523a6f5501224959d0976757b511299bf892313e79d14f5c F src/delete.c 59eeca3fb88c29329afc41bb803ee568b120d9dd7470b5f38ab55cc38390b451 @@ -2208,8 +2208,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P d4691a0db1e96b646d3094f183b1fc330411a2d2472b09f9b5fe0fb268b5ca09 -R 145cd6d2b4e7e0d75fa1a0ce2f39b485 +P 2fe53e6d68c3f9f1c4b064fa40fe8efe12025179a973182f0bb256acb9b5d58d +R 3de030f0b5267bf636ad519cf6229737 U drh -Z d46f3685c2145cc293e91b653e420b9b +Z e6a5bf5d9c5bcab97848f385d89977e5 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index e1d6a3e2eb..bf4b955737 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -2fe53e6d68c3f9f1c4b064fa40fe8efe12025179a973182f0bb256acb9b5d58d +7356bf3a813bcd9082a7fdef5e2cc38c7a0f142f0ef4c948f78e4dafa216c039 diff --git a/src/alter.c b/src/alter.c index 7e6ab32557..a654a7cde7 100644 --- a/src/alter.c +++ b/src/alter.c @@ -2661,9 +2661,8 @@ static void addConstraintFunc( int iCol = sqlite3_value_int(argv[2]); int iOff = 0; int ii; - char *zNew = 0; + sqlite3_str *pNew; int t = 0; - sqlite3 *db; UNUSED_PARAMETER(NotUsed); if( skipCreateTable(ctx, zSql, &iOff) ) return; @@ -2683,13 +2682,11 @@ static void addConstraintFunc( iOff += getWhitespace(&zSql[iOff]); - db = sqlite3_context_db_handle(ctx); - if( iCol<0 ){ - zNew = sqlite3MPrintf(db, "%.*s, %s%s", iOff, zSql, zCons, &zSql[iOff]); - }else{ - zNew = sqlite3MPrintf(db, "%.*s %s%s", iOff, zSql, zCons, &zSql[iOff]); - } - sqlite3_result_text(ctx, zNew, -1, SQLITE_DYNAMIC); + pNew = sqlite3_str_new(sqlite3_context_db_handle(ctx)); + sqlite3_str_append(pNew, zSql, iOff); + if( iCol<0 ) sqlite3_str_append(pNew, ",", 1); + sqlite3_str_appendf(pNew, " %s%s", zCons, &zSql[iOff]); + sqlite3_result_str(ctx, pNew, SQLITE_FINISH); } /* diff --git a/src/date.c b/src/date.c index 4cad55ffa5..985caaa9a2 100644 --- a/src/date.c +++ b/src/date.c @@ -1416,38 +1416,38 @@ static void strftimeFunc( size_t i,j; sqlite3 *db; const char *zFmt; - sqlite3_str sRes; + sqlite3_str *pRes; if( argc==0 ) return; zFmt = (const char*)sqlite3_value_text(argv[0]); if( zFmt==0 || isDate(context, argc-1, argv+1, &x) ) return; db = sqlite3_context_db_handle(context); - sqlite3StrAccumInit(&sRes, 0, 0, 0, db->aLimit[SQLITE_LIMIT_LENGTH]); + pRes = sqlite3_str_new(db); computeJD(&x); computeYMD_HMS(&x); for(i=j=0; zFmt[i]; i++){ char cf; if( zFmt[i]!='%' ) continue; - if( j59.999) ) s = 59.999; - sqlite3_str_appendf(&sRes, "%06.3f", s); + sqlite3_str_appendf(pRes, "%06.3f", s); break; } case 'F': { - sqlite3_str_appendf(&sRes, "%04d-%02d-%02d", x.Y, x.M, x.D); + sqlite3_str_appendf(pRes, "%04d-%02d-%02d", x.Y, x.M, x.D); break; } case 'G': /* Fall thru */ @@ -1459,15 +1459,15 @@ static void strftimeFunc( y.validYMD = 0; computeYMD(&y); if( cf=='g' ){ - sqlite3_str_appendf(&sRes, "%02d", y.Y%100); + sqlite3_str_appendf(pRes, "%02d", y.Y%100); }else{ - sqlite3_str_appendf(&sRes, "%04d", y.Y); + sqlite3_str_appendf(pRes, "%04d", y.Y); } break; } case 'H': case 'k': { - sqlite3_str_appendf(&sRes, cf=='H' ? "%02d" : "%2d", x.h); + sqlite3_str_appendf(pRes, cf=='H' ? "%02d" : "%2d", x.h); break; } case 'I': /* Fall thru */ @@ -1475,65 +1475,65 @@ static void strftimeFunc( int h = x.h; if( h>12 ) h -= 12; if( h==0 ) h = 12; - sqlite3_str_appendf(&sRes, cf=='I' ? "%02d" : "%2d", h); + sqlite3_str_appendf(pRes, cf=='I' ? "%02d" : "%2d", h); break; } case 'j': { /* Day of year. Jan01==1, Jan02==2, and so forth */ - sqlite3_str_appendf(&sRes,"%03d",daysAfterJan01(&x)+1); + sqlite3_str_appendf(pRes,"%03d",daysAfterJan01(&x)+1); break; } case 'J': { /* Julian day number. (Non-standard) */ - sqlite3_str_appendf(&sRes,"%.16g",x.iJD/86400000.0); + sqlite3_str_appendf(pRes,"%.16g",x.iJD/86400000.0); break; } case 'm': { - sqlite3_str_appendf(&sRes,"%02d",x.M); + sqlite3_str_appendf(pRes,"%02d",x.M); break; } case 'M': { - sqlite3_str_appendf(&sRes,"%02d",x.m); + sqlite3_str_appendf(pRes,"%02d",x.m); break; } case 'p': /* Fall thru */ case 'P': { if( x.h>=12 ){ - sqlite3_str_append(&sRes, cf=='p' ? "PM" : "pm", 2); + sqlite3_str_append(pRes, cf=='p' ? "PM" : "pm", 2); }else{ - sqlite3_str_append(&sRes, cf=='p' ? "AM" : "am", 2); + sqlite3_str_append(pRes, cf=='p' ? "AM" : "am", 2); } break; } case 'R': { - sqlite3_str_appendf(&sRes, "%02d:%02d", x.h, x.m); + sqlite3_str_appendf(pRes, "%02d:%02d", x.h, x.m); break; } case 's': { if( x.useSubsec ){ - sqlite3_str_appendf(&sRes,"%.3f", + sqlite3_str_appendf(pRes,"%.3f", (x.iJD - 21086676*(i64)10000000)/1000.0); }else{ i64 iS = (i64)(x.iJD/1000 - 21086676*(i64)10000); - sqlite3_str_appendf(&sRes,"%lld",iS); + sqlite3_str_appendf(pRes,"%lld",iS); } break; } case 'S': { - sqlite3_str_appendf(&sRes,"%02d",(int)x.s); + sqlite3_str_appendf(pRes,"%02d",(int)x.s); break; } case 'T': { - sqlite3_str_appendf(&sRes,"%02d:%02d:%02d", x.h, x.m, (int)x.s); + sqlite3_str_appendf(pRes,"%02d:%02d:%02d", x.h, x.m, (int)x.s); break; } case 'u': /* Day of week. 1 to 7. Monday==1, Sunday==7 */ case 'w': { /* Day of week. 0 to 6. Sunday==0, Monday==1 */ char c = (char)daysAfterSunday(&x) + '0'; if( c=='0' && cf=='u' ) c = '7'; - sqlite3_str_appendchar(&sRes, 1, c); + sqlite3_str_appendchar(pRes, 1, c); break; } case 'U': { /* Week num. 00-53. First Sun of the year is week 01 */ - sqlite3_str_appendf(&sRes,"%02d", + sqlite3_str_appendf(pRes,"%02d", (daysAfterJan01(&x)-daysAfterSunday(&x)+7)/7); break; } @@ -1544,30 +1544,30 @@ static void strftimeFunc( y.iJD += (3 - daysAfterMonday(&x))*86400000; y.validYMD = 0; computeYMD(&y); - sqlite3_str_appendf(&sRes,"%02d", daysAfterJan01(&y)/7+1); + sqlite3_str_appendf(pRes,"%02d", daysAfterJan01(&y)/7+1); break; } case 'W': { /* Week num. 00-53. First Mon of the year is week 01 */ - sqlite3_str_appendf(&sRes,"%02d", + sqlite3_str_appendf(pRes,"%02d", (daysAfterJan01(&x)-daysAfterMonday(&x)+7)/7); break; } case 'Y': { - sqlite3_str_appendf(&sRes,"%04d",x.Y); + sqlite3_str_appendf(pRes,"%04d",x.Y); break; } case '%': { - sqlite3_str_appendchar(&sRes, 1, '%'); + sqlite3_str_appendchar(pRes, 1, '%'); break; } default: { - sqlite3_str_reset(&sRes); + sqlite3_str_free(pRes); return; } } } - if( j