diff --git a/manifest b/manifest index 4eeabb2d87..59d95795e8 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Simplify\sthe\s".clone"\scommand\sso\sthat\sit\sjust\smakes\sa\scopy\sof\sthe\smain\ndatabase.\s\sMove\sthe\simplementation\sinto\sa\sseparate\sdotCmdClone()\sfunction\nand\sprovide\sbetter\shelp\stext\sexplaining\sits\shistory. -D 2026-10-20T19:30:24.831 +C Change\sthe\ssqlite3_serialize()\sinterface\sto\sreturn\sa\sNULL\spointer\sif\nthe\sdatabase\sis\sfile-based\sand\san\sI/O\serror\soccurs\swhile\sreading.\n[bugs:/info/2026-10-18T10:04:32Z|Enhancement\srequest\s2026-10-18T10:04:32Z]. +D 2026-10-20T20:17:15.382 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -778,7 +778,7 @@ F src/mem1.c 3bb59158c38e05f6270e761a9f435bf19827a264c13d1631c58b84bdc96d73b2 F src/mem2.c c8bfc9446fd0798bddd495eb5d9dbafa7d4b7287d8c22d50a83ac9daa26d8a75 F src/mem3.c 30301196cace2a085cbedee1326a49f4b26deff0af68774ca82c1f7c06fda4f6 F src/mem5.c b7da5c10a726aacacc9ad7cdcb0667deec643e117591cc69cf9b4b9e7f3e96ff -F src/memdb.c 290a67488b83fccb0ca9c637342043466e0b16c945ef7d68e0f91679661ff315 +F src/memdb.c 6915279b56ca9b6e1cd6549edf83887b0454ac6b9790b48efb7c90cbf935c092 F src/memjournal.c c283c6c95d940eb9dc70f1863eef3ee40382dbd35e5a1108026e7817c206e8a0 F src/msvc.h 80b35f95d93bf996ccb3e498535255f2ef1118c78764719a7cd15ab4106ccac9 F src/mutex.c 8b34ded0298d2e16060ad4b8cdc890f512d2582de7e420dc3b39f20bb6a3f97c @@ -809,7 +809,7 @@ F src/resolve.c 658d5d8f67b7565cbed56394d0fdbb124561a92c7455253186189db5e090e661 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97 F src/select.c 7b82615d355666993b777da78a6892e3e48220efe9fd24eb0bb10fc3953c7bc0 F src/shell.c.in 808c0bd4a593a3552777c059e90c9c47e459f507fa25d2afd298edf09d3140f5 -F src/sqlite.h.in d73bee6ea0612260b5edf72e3e58de7bd2a50cff000e0f4b3c3549d3e4c35171 +F src/sqlite.h.in 2bf0346991d5a6066581c57cc8a12554b22aec7d32630b493db564f0afd376b3 F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479 F src/sqlite3ext.h 5e113c4c0442f2f1b3345d44cbe4b82fad45f2fc0c35f0ed4eef27fb8f1cb394 F src/sqliteInt.h 97293a49107ea79c7ebe72f9a5ffc262a3ecb8bf59ba0002c1f4753669bd2e3d @@ -2295,8 +2295,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P 3f8b4c7760148eabbf721ff9b8321793972d372fa3156dc8c60ed680f5467d0c -R 30f8f60c48ac60a693d47e31704ae3c6 +P 8b5c87a5f4dc6dccf2130d41df958ea59f0892836b574388539ee7d905cd014d +R b22cdabd9c2ad673aa4d7df0a4749377 U drh -Z 993d09f4999c4f0c0b7b58894f899ac6 +Z 77962818634bfc47f844912074998b45 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index b705fe11e3..199e997f7b 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -8b5c87a5f4dc6dccf2130d41df958ea59f0892836b574388539ee7d905cd014d +aa36cfe5b0f944752ace7986b2bff5dcb597fc0d456da781ed5b55e47ecb3d3c diff --git a/src/memdb.c b/src/memdb.c index bfafba6f68..9e22b7c82f 100644 --- a/src/memdb.c +++ b/src/memdb.c @@ -745,7 +745,8 @@ static MemFile *memdbFromDbSchema(sqlite3 *db, const char *zSchema){ } /* -** Return the serialization of a database +** Return the serialization of a database. Or return NULL if there +** is an OOM or I/O error. */ unsigned char *sqlite3_serialize( sqlite3 *db, /* The database connection */ @@ -821,8 +822,12 @@ unsigned char *sqlite3_serialize( rc = sqlite3PagerGet(pPager, pgno, (DbPage**)&pPage, 0); if( rc==SQLITE_OK ){ memcpy(pTo, sqlite3PagerGetData(pPage), szPage); - }else{ + }else if( pgno==PENDING_BYTE/szPage+1 ){ memset(pTo, 0, szPage); + }else{ + sqlite3_free(pOut); + pOut = 0; + nPage = 0; } sqlite3PagerUnref(pPage); } diff --git a/src/sqlite.h.in b/src/sqlite.h.in index 421d2d584f..7842471bab 100644 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@ -11264,7 +11264,7 @@ int sqlite3_snapshot_recover(sqlite3 *db, const char *zDb); ** ** A call to sqlite3_serialize(D,S,P,F) might return NULL even if the ** SQLITE_SERIALIZE_NOCOPY bit is omitted from argument F if a memory -** allocation error occurs. +** allocation or I/O error occurs. ** ** This interface is omitted if SQLite is compiled with the ** [SQLITE_OMIT_DESERIALIZE] option.