From df23b518da9ff5db7120fd00b476f4450403b0e4 Mon Sep 17 00:00:00 2001 From: stephan Date: Wed, 30 Jul 2025 19:48:12 +0000 Subject: [PATCH] Apply alignment-related patches suggested in [forum:41cd226375cd49c6 | forum post 41cd226375]. FossilOrigin-Name: 527bbc1676a85a927352cd10a292afe041a72692ec0b1360e5a1ccaa19a32fcb --- ext/fts5/fts5_index.c | 7 +++++-- manifest | 26 +++++++++++++------------- manifest.uuid | 2 +- src/resolve.c | 7 +++++-- src/trigger.c | 7 +++++-- src/vdbeInt.h | 5 ++++- src/vdbeaux.c | 2 +- src/wherecode.c | 7 +++++-- test/fuzzcheck.c | 7 +++++-- 9 files changed, 44 insertions(+), 26 deletions(-) diff --git a/ext/fts5/fts5_index.c b/ext/fts5/fts5_index.c index 182936cda9..c54a2337f5 100644 --- a/ext/fts5/fts5_index.c +++ b/ext/fts5/fts5_index.c @@ -6822,10 +6822,13 @@ int sqlite3Fts5IndexRollback(Fts5Index *p){ */ int sqlite3Fts5IndexReinit(Fts5Index *p){ Fts5Structure *pTmp; - u8 tmpSpace[SZ_FTS5STRUCTURE(1)]; + union { + u8 tmpSpace[SZ_FTS5STRUCTURE(1)]; + Fts5Structure sFts; + } uFts; fts5StructureInvalidate(p); fts5IndexDiscardData(p); - pTmp = (Fts5Structure*)tmpSpace; + pTmp = &uFts.sFts; memset(pTmp, 0, SZ_FTS5STRUCTURE(1)); if( p->pConfig->bContentlessDelete ){ pTmp->nOriginCntr = 1; diff --git a/manifest b/manifest index cffe40c491..60776027eb 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Default\spointer\ssize\sfor\sthe\s__SUNPRO_C\scompiler\sis\s4\sbytes. -D 2025-07-30T18:23:33.466 +C Apply\salignment-related\spatches\ssuggested\sin\s[forum:41cd226375cd49c6\s|\sforum\spost\s41cd226375]. +D 2025-07-30T19:48:12.580 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -113,7 +113,7 @@ F ext/fts5/fts5_buffer.c f1e6d0324d7c55329d340673befc26681a372a4d36086caa8d1ec7d F ext/fts5/fts5_config.c e7d8dd062b44a66cd77e5a0f74f23a2354cd1f3f8575afb967b2773c3384f7f8 F ext/fts5/fts5_expr.c be9e5f7f11d87e7bd3680832c93c13050fe351994b5052b0215c2ef40312c23a F ext/fts5/fts5_hash.c a6266cedd801ab7964fa9e74ebcdda6d30ec6a96107fa24148ec6b7b5b80f6e0 -F ext/fts5/fts5_index.c c1ca58fbc4b323d2153ab42ed787d78d5beb64f5710d0dcb83d94c6ddd184492 +F ext/fts5/fts5_index.c 3581c5db41da98d00c8f8edd310042b9715c8caa09765a48ad63c7941eb5e390 F ext/fts5/fts5_main.c e558225168845dc708abeb2ad10415696e5a3249bcba1810ba3c7ef80764962e F ext/fts5/fts5_storage.c 19bc7c4cbe1e6a2dd9849ef7d84b5ca1fcbf194cefc3e386b901e00e08bf05c2 F ext/fts5/fts5_tcl.c 7fb5a3d3404099075aaa2457307cb459bbc257c0de3dbd52b1e80a5b503e0329 @@ -784,7 +784,7 @@ F src/pragma.c 30b535d0a66348df844ee36f890617b4cf45e9a22dcbc47ec3ca92909c50aaf1 F src/prepare.c 1832be043fce7d489959aae6f994c452d023914714c4d5457beaed51c0f3d126 F src/printf.c 5f0c957af9699e849d786e8fbaa3baab648ca5612230dc17916434c14bc8698f F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c -F src/resolve.c e344c0ff75db05acd80a81ab090547d28d0e990f6f411a428d429183a7c73927 +F src/resolve.c b24641d27cb4552005e2de0d2c07bb5dd44c95f32e0bc407479985af75fa01a9 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97 F src/select.c a6be657216e1fb72f85dad7df0dba0eb79fe76527c08caa65da8fe44f0e4db44 F src/shell.c.in 7918c9355667b3b348e5850f0dad9095476ef942ee3b96ee9b8bc2710adda1da @@ -847,7 +847,7 @@ F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9 F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c F src/tokenize.c 8400646d2830afc2f2dc465a75e3a92e4bedeea623f19dbd79c0c12d0dd6dda2 F src/treeview.c d85ce76e6d1498d781957c07cb234da6d77ce0ed2d196480d516f54dabc62279 -F src/trigger.c 3ffb8ed6b64dbcc0ccae6e82435d01be3bf547e13b814e2d46f7df9bef84748e +F src/trigger.c 905808ef9c34c7a386f7c3578af0fd216534eda5a06e10d863f574f3cca9abf0 F src/update.c 3e5e7ff66fa19ebe4d1b113d480639a24cc1175adbefabbd1a948a07f28e37cf F src/upsert.c 215328c3f91623c520ec8672c44323553f12caeb4f01b1090ebdca99fdf7b4f1 F src/utf.c 7267c3fb9e2467020507601af3354c2446c61f444387e094c779dccd5ca62165 @@ -855,9 +855,9 @@ F src/util.c 36fb1150062957280777655976f3f9a75db236cb8207a0770ceae8d5ec17fcd3 F src/vacuum.c 1bacdd0a81d2b5dc1c508fbf0d938c89fa78dd8d5b46ec92686d44030d4f4789 F src/vdbe.c a5873cd566a0e2a0344a86dd946add9d34fae3feeae8b126277ef7af8dc11f91 F src/vdbe.h ea1f1b52f0efe422f80d88da3c57e4eadc72856e29a22f1ff08e502ec6ba5f08 -F src/vdbeInt.h d604607ce8c958fb66b8cb5a6915ba2f09a352c7dc38fee7e3157b951c84eac5 +F src/vdbeInt.h 8f714d6c71c66853b2cf07da6d2fa8e9808931428a3dd14c576adbe2530152b0 F src/vdbeapi.c f9a4881a9674fec3fa13da35044a1484d3c4b95f9ec891cc8ffb02ef2b7a41df -F src/vdbeaux.c d5a92c04deb8ec843a2449bc894cb377f0d13f3b6733a2b59d4df9e761c511a9 +F src/vdbeaux.c b701e5920fe74b907eb8211d1f63fef96adc65dfd6e1ad6ed0843c71d8c65205 F src/vdbeblob.c b3f0640db9642fbdc88bd6ebcc83d6009514cafc98f062f675f2c8d505d82692 F src/vdbemem.c e67d9c6484d868c879d20c70d00bf4a9058082f1d4058607ca15d50eb3aebc21 F src/vdbesort.c cb6f472e83ca12c46aa7de0ac0a9d11458b357986f2617a1c90dfb19a542ecbe @@ -870,7 +870,7 @@ F src/wal.h ba252daaa94f889f4b2c17c027e823d9be47ce39da1d3799886bbd51f0490452 F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014 F src/where.c f2f075bd17065922235632feb368efe92a7f03d42797eb575267574fbf6d4218 F src/whereInt.h 8d94cb116c9e06205c3d5ac87af065fc044f8cf08bfdccd94b6ea1c1308e65da -F src/wherecode.c 2a2d2993fd98c46f525f71b3bfd330fde73d8613aa0ff3e20402dd1fc63470af +F src/wherecode.c 946edb42491a08672322194459ffcfd0369b89b38e8b4bec8c4463888fe80dd0 F src/whereexpr.c 78c28a8da187816d5d82049f2e343fb39f4a8e30b5bf1bda9b96cecde40ca8bd F src/window.c d01227141f622f24fbe36ca105fbe6ef023f9fd98f1ccd65da95f88886565db5 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 @@ -1285,7 +1285,7 @@ F test/fuzz3.test 70ba57260364b83e964707b9d4b5625284239768ab907dd387c740c0370ce3 F test/fuzz4.test c229bcdb45518a89e1d208a21343e061503460ac69fae1539320a89f572eb634 F test/fuzz_common.tcl b7197de6ed1ee8250a4f82d67876f4561b42ee8cbbfc6160dcb66331bad3f830 F test/fuzz_malloc.test f348276e732e814802e39f042b1f6da6362a610af73a528d8f76898fde6b22f2 -F test/fuzzcheck.c 19f8af47a5c4ee2c3943fdee270f1f14e3d83fe968a9737a7557fb4e3c06efc1 +F test/fuzzcheck.c 0c9b1b41a13e980ae7c3a44df485faedfb584f7c55f9c1e00a72481801f2c01d F test/fuzzdata1.db 3e86d9cf5aea68ddb8e27c02d7dfdaa226347426c7eb814918e4d95475bf8517 F test/fuzzdata2.db 128b3feeb78918d075c9b14b48610145a0dd4c8d6f1ca7c2870c7e425f5bf31f F test/fuzzdata3.db c6586d3e3cef0fbc18108f9bb649aa77bfc38aba @@ -2213,8 +2213,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P cf7163f82ca380958a79350473b2c5a2cebda7496d6d575fa2835c362010fea1 -R c9df2b0ddadfdaa47f1578f91dd3a1c2 -U drh -Z c001b62dd840d8c304317580e7a34dde +P e283d817e3a93a3cd42c7b79e08e5fb61cb4fa4734137b92f1748dbbe8b8b919 +R f3ca06a2bb82df67814293179013369c +U stephan +Z 38d94cdfd982403eb4386765bc680165 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index abe1a78e8b..73bc15fc05 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e283d817e3a93a3cd42c7b79e08e5fb61cb4fa4734137b92f1748dbbe8b8b919 +527bbc1676a85a927352cd10a292afe041a72692ec0b1360e5a1ccaa19a32fcb diff --git a/src/resolve.c b/src/resolve.c index f30d1afeb3..6029dda0ec 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -2283,13 +2283,16 @@ int sqlite3ResolveSelfReference( SrcList *pSrc; /* Fake SrcList for pParse->pNewTable */ NameContext sNC; /* Name context for pParse->pNewTable */ int rc; - u8 srcSpace[SZ_SRCLIST_1]; /* Memory space for the fake SrcList */ + union { + u8 srcSpace[SZ_SRCLIST_1]; /* Memory space for the fake SrcList */ + SrcList sSrc; + } uSrc; assert( type==0 || pTab!=0 ); assert( type==NC_IsCheck || type==NC_PartIdx || type==NC_IdxExpr || type==NC_GenCol || pTab==0 ); memset(&sNC, 0, sizeof(sNC)); - pSrc = (SrcList*)srcSpace; + pSrc = &uSrc.sSrc; memset(pSrc, 0, SZ_SRCLIST_1); if( pTab ){ pSrc->nSrc = 1; diff --git a/src/trigger.c b/src/trigger.c index 779da5e5fb..a4a652baf5 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -1040,7 +1040,10 @@ static void codeReturningTrigger( Returning *pReturning; Select sSelect; SrcList *pFrom; - u8 fromSpace[SZ_SRCLIST_1]; + union { + u8 fromSpace[SZ_SRCLIST_1]; + SrcList sSrc; + } uSrc; assert( v!=0 ); if( !pParse->bReturning ){ @@ -1056,7 +1059,7 @@ static void codeReturningTrigger( return; } memset(&sSelect, 0, sizeof(sSelect)); - pFrom = (SrcList*)fromSpace; + pFrom = &uSrc.sSrc; memset(pFrom, 0, SZ_SRCLIST_1); sSelect.pEList = sqlite3ExprListDup(db, pReturning->pReturnEL, 0); sSelect.pSrc = pFrom; diff --git a/src/vdbeInt.h b/src/vdbeInt.h index 0a944c6d87..856a83764b 100644 --- a/src/vdbeInt.h +++ b/src/vdbeInt.h @@ -557,7 +557,10 @@ struct PreUpdate { Table *pTab; /* Schema object being updated */ Index *pPk; /* PK index if pTab is WITHOUT ROWID */ sqlite3_value **apDflt; /* Array of default values, if required */ - u8 keyinfoSpace[SZ_KEYINFO_0]; /* Space to hold pKeyinfo[0] content */ + union { + u8 keyinfoSpace[SZ_KEYINFO_0]; /* Space to hold pKeyinfo[0] content */ + KeyInfo sKey; + } uKey; }; /* diff --git a/src/vdbeaux.c b/src/vdbeaux.c index 94e83d97a5..c8b86e6f6d 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -5538,7 +5538,7 @@ void sqlite3VdbePreUpdateHook( preupdate.pCsr = pCsr; preupdate.op = op; preupdate.iNewReg = iReg; - preupdate.pKeyinfo = (KeyInfo*)&preupdate.keyinfoSpace; + preupdate.pKeyinfo = &preupdate.uKey.sKey; preupdate.pKeyinfo->db = db; preupdate.pKeyinfo->enc = ENC(db); preupdate.pKeyinfo->nKeyField = pTab->nCol; diff --git a/src/wherecode.c b/src/wherecode.c index 43a669d815..a1a9c5d8b8 100644 --- a/src/wherecode.c +++ b/src/wherecode.c @@ -2845,7 +2845,10 @@ SQLITE_NOINLINE void sqlite3WhereRightJoinLoop( WhereLoop *pLoop = pLevel->pWLoop; SrcItem *pTabItem = &pWInfo->pTabList->a[pLevel->iFrom]; SrcList *pFrom; - u8 fromSpace[SZ_SRCLIST_1]; + union { + u8 fromSpace[SZ_SRCLIST_1]; + SrcList sSrc; + } uSrc; Bitmask mAll = 0; int k; @@ -2889,7 +2892,7 @@ SQLITE_NOINLINE void sqlite3WhereRightJoinLoop( sqlite3ExprDup(pParse->db, pTerm->pExpr, 0)); } } - pFrom = (SrcList*)fromSpace; + pFrom = &uSrc.sSrc; pFrom->nSrc = 1; pFrom->nAlloc = 1; memcpy(&pFrom->a[0], pTabItem, sizeof(SrcItem)); diff --git a/test/fuzzcheck.c b/test/fuzzcheck.c index 09898d7b35..11b37b1290 100644 --- a/test/fuzzcheck.c +++ b/test/fuzzcheck.c @@ -541,9 +541,12 @@ static void blobListLoadFromDb( int n = 0; int rc; char *z2; - unsigned char tmp[SZ_BLOB(8)]; + union { + unsigned char tmp[SZ_BLOB(8)]; + Blob * sBlob; + } uBlob; - head = (Blob*)tmp; + head = &uBlob.sBlob; if( firstId>0 ){ z2 = sqlite3_mprintf("%s WHERE rowid BETWEEN %d AND %d", zSql, firstId, lastId); -- 2.47.2