]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Use sqlite3MPrintf() instead of sqlite3_mprintf() internally in alter.c, alter-table-constraints
authordrh <>
Thu, 20 Nov 2025 11:06:58 +0000 (11:06 +0000)
committerdrh <>
Thu, 20 Nov 2025 11:06:58 +0000 (11:06 +0000)
for improved OOM reporting.

FossilOrigin-Name: 57555d75daa2ee8345f8329749841a322b3e57679e5c4899ef749c8bc814812d

manifest
manifest.uuid
src/alter.c

index a26e7d89c66944b1f76b830a78af68531b8876bc..2c1aa727a77d5b68724b18345a6ec7f57c1d3292 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Additional\schecks\sfor\sOOM\sconditions.
-D 2025-11-20T02:03:57.963
+C Use\ssqlite3MPrintf()\sinstead\sof\ssqlite3_mprintf()\sinternally\sin\salter.c,\nfor\simproved\sOOM\sreporting.
+D 2025-11-20T11:06:58.496
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -666,7 +666,7 @@ F mptest/multiwrite01.test dab5c5f8f9534971efce679152c5146da265222d
 F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
 F sqlite3.1 1b9c24374a85dfc7eb8fa7c4266ee0db4f9609cceecfc5481cd8307e5af04366
 F sqlite3.pc.in e6dee284fba59ef500092fdc1843df3be8433323a3733c91da96690a50a5b398
-F src/alter.c d7151775cf5d32d0eef917f5058791c571417fd2852f4ad4e7a29748098c6503
+F src/alter.c f31437552c733957f19351cdfae8fad8e8f0c7d11041e5b7966aae57206ad91f
 F src/analyze.c 03bcfc083fc0cccaa9ded93604e1d4244ea245c17285d463ef6a60425fcb247d
 F src/attach.c 9af61b63b10ee702b1594ecd24fb8cea0839cfdb6addee52fba26fa879f5db9d
 F src/auth.c 54ab9c6c5803b47c0d45b76ce27eff22a03b4b1f767c5945a3a4eb13aa4c78dc
@@ -2177,8 +2177,8 @@ F tool/version-info.c 33d0390ef484b3b1cb685d59362be891ea162123cea181cb8e6d2cf6dd
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P df2259a32fd65986eafceb2c551e6e1661927f1f5b18dbb97c59d9627279eea0
-R f7bd098503221c71a258f97d8f310236
+P 8fafd4988bf1fa1aa799c2834dd31bebdd52e7ae8e68c0197ccb497eb9b1e5f6
+R db1904a60d74ce682aea26b215aeb826
 U drh
-Z 20fc64fb6a35782adf034c6413836124
+Z f97a43221f64e29debc08ffbb7442414
 # Remove this line to create a well-formed Fossil manifest.
index 12091d76e689d886dac3190cf11dd04bb0ffc1f0..d3eecd4c350673618cf379cc30de57c537126842 100644 (file)
@@ -1 +1 @@
-8fafd4988bf1fa1aa799c2834dd31bebdd52e7ae8e68c0197ccb497eb9b1e5f6
+57555d75daa2ee8345f8329749841a322b3e57679e5c4899ef749c8bc814812d
index 6a81decd5ce3450f0e725fdca2f15ade79b34b6d..c5a64211f8376c109475b79903385037703abe5d 100644 (file)
@@ -2519,6 +2519,7 @@ static void dropConstraintFunc(
   int iEnd = 0;
   char *zNew = 0;
   int t = 0;
+  sqlite3 *db;
   UNUSED_PARAMETER(NotUsed);
 
   if( zSql==0 ) return;
@@ -2624,13 +2625,9 @@ static void dropConstraintFunc(
       if( zSql[iStart-1]==',' ) iStart--;
     }
 
-    zNew = sqlite3_mprintf("%.*s%s%s", iStart, zSql, zSpace, &zSql[iEnd]);
-    if( zNew==0 ){
-      sqlite3_result_error_nomem(ctx);
-    }else{
-      sqlite3_result_text(ctx, zNew, -1, SQLITE_TRANSIENT);
-      sqlite3_free(zNew);
-    }
+    db = sqlite3_context_db_handle(ctx);
+    zNew = sqlite3MPrintf(db, "%.*s%s%s", iStart, zSql, zSpace, &zSql[iEnd]);
+    sqlite3_result_text(ctx, zNew, -1, SQLITE_DYNAMIC);
   }
 }
 
@@ -2655,6 +2652,7 @@ static void addConstraintFunc(
   int ii;
   char *zNew = 0;
   int t = 0;
+  sqlite3 *db;
   UNUSED_PARAMETER(NotUsed);
 
   if( skipCreateTable(ctx, zSql, &iOff) ) return;
@@ -2674,18 +2672,13 @@ static void addConstraintFunc(
 
   iOff += getWhitespace(&zSql[iOff]);
 
+  db = sqlite3_context_db_handle(ctx);
   if( iCol<0 ){
-    zNew = sqlite3_mprintf("%.*s, %s%s", iOff, zSql, zCons, &zSql[iOff]);
-  }else{
-    zNew = sqlite3_mprintf("%.*s %s%s", iOff, zSql, zCons, &zSql[iOff]);
-  }
-
-  if( zNew==0 ){
-    sqlite3_result_error_nomem(ctx);
+    zNew = sqlite3MPrintf(db, "%.*s, %s%s", iOff, zSql, zCons, &zSql[iOff]);
   }else{
-    sqlite3_result_text(ctx, zNew, -1, SQLITE_TRANSIENT);
-    sqlite3_free(zNew);
+    zNew = sqlite3MPrintf(db, "%.*s %s%s", iOff, zSql, zCons, &zSql[iOff]);
   }
+  sqlite3_result_text(ctx, zNew, -1, SQLITE_DYNAMIC);
 }
 
 /*
@@ -2849,14 +2842,11 @@ static int alterRtrimConstraint(
   const char *pCons,              /* Buffer containing constraint */
   int nCons                       /* Size of pCons in bytes */
 ){
-  u8 *zTmp = (u8*)sqlite3_mprintf("%.*s", nCons, pCons);
+  u8 *zTmp = (u8*)sqlite3MPrintf(db, "%.*s", nCons, pCons);
   int iOff = 0;
   int iEnd = 0;
 
-  if( zTmp==0 ){
-    sqlite3OomFault(db);
-    return 0;
-  }
+  if( zTmp==0 ) return 0;
 
   while( 1 ){
     int t = 0;
@@ -2868,7 +2858,7 @@ static int alterRtrimConstraint(
     iOff += nToken;
   }
 
-  sqlite3_free(zTmp);
+  sqlite3DbFree(db, zTmp);
   return iEnd;
 }