From 2ac90af39e6d31fe24cce6eac3076ee4ebe91d00 Mon Sep 17 00:00:00 2001 From: Percy Wegmann Date: Wed, 25 Feb 2026 16:13:48 -0600 Subject: [PATCH] pull in latest tmstmpvfs.c from upstream Updates tailscale/corp#36170 Signed-off-by: Percy Wegmann --- cgosqlite/tmstmpvfs.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/cgosqlite/tmstmpvfs.c b/cgosqlite/tmstmpvfs.c index 98b2597..6f1af36 100644 --- a/cgosqlite/tmstmpvfs.c +++ b/cgosqlite/tmstmpvfs.c @@ -484,6 +484,7 @@ static void tmstmpPutU32(u32 v, unsigned char *a){ /* Free a TmstmpLog object */ static void tmstmpLogFree(TmstmpLog *pLog){ if( pLog==0 ) return; + if( pLog->log ) fclose(pLog->log); sqlite3_free(pLog->zLogname); sqlite3_free(pLog); } @@ -638,7 +639,7 @@ static int tmstmpWrite( memset(s, 0, TMSTMP_RESERVE); tmstmpPutTS(p, s+2); tmstmpPutU32(p->iFrame, s+8); - tmstmpPutU32(p->pPartner->salt1, s+12); + tmstmpPutU32(p->pPartner->salt1 & 0xffffff, s+12); assert( p->pgsz>0 ); tmstmpEvent(p, ELOG_CKPT_PAGE, 0, (iOfst/p->pgsz)+1, p->iFrame, 0); }else if( p->pPartner==0 ){ @@ -648,7 +649,7 @@ static int tmstmpWrite( tmstmpPutTS(p, s+2); s[12] = 2; assert( p->pgsz>0 ); - tmstmpEvent(p, ELOG_DB_PAGE, 0, (u32)(iOfst/p->pgsz), 0, s+2); + tmstmpEvent(p, ELOG_DB_PAGE, 0, (u32)(iOfst/p->pgsz)+1, 0, s+2); } return pSub->pMethods->xWrite(pSub,zBuf,iAmt,iOfst); } @@ -860,7 +861,7 @@ static int tmstmpOpen( TmstmpLog *pLog; sqlite3_uint64 r1; /* Milliseconds since 1970-01-01 */ sqlite3_uint64 days; /* Days since 1970-01-01 */ - sqlite3_uint64 sod; /* Start of date specified by ms */ + sqlite3_uint64 sod; /* Start of date specified by r1 */ sqlite3_uint64 z; /* Days since 0000-03-01 */ sqlite3_uint64 era; /* 400-year era */ int h; /* hour */ @@ -880,7 +881,9 @@ static int tmstmpOpen( r1 = 0; pLog = sqlite3_malloc64( sizeof(TmstmpLog) ); if( pLog==0 ){ - return SQLITE_NOMEM; + pSubFile->pMethods->xClose(pSubFile); + rc = SQLITE_NOMEM; + goto tmstmp_open_done; } memset(pLog, 0, sizeof(pLog[0])); p->pLog = pLog; @@ -894,7 +897,7 @@ static int tmstmpOpen( m = (sod%3600)/60; s = sod%60; z = days + 719468; - era = z/147097; + era = z/146097; doe = (unsigned)(z - era*146097); yoe = (doe - doe/1460 + doe/36524 - doe/146096)/365; y = (int)yoe + era*400;