sqliteOsSeek(&pPager->fd, (pgRec.pgno-1)*(off_t)SQLITE_PAGE_SIZE);
sqliteOsSeek(&pPager->fd, (pgRec.pgno-1)*(OFF_T)SQLITE_PAGE_SIZE);
static int pager_playback_one_page(Pager *pPager, OsFile *jfd, int format){  int rc;  PgHdr *pPg;              /* An existing page in the cache */  PageRecord pgRec;  u32 cksum;  rc = read32bits(format, jfd, &pgRec.pgno);  if( rc!=SQLITE_OK ) return rc;  rc = sqliteOsRead(jfd, &pgRec.aData, sizeof(pgRec.aData));  if( rc!=SQLITE_OK ) return rc;  /* Sanity checking on the page.  This is more important that I originally  ** thought.  If a power failure occurs while the journal is being written,  ** it could cause invalid data to be written into the journal.  We need to  ** detect this invalid data (with high probability) and ignore it.  */  if( pgRec.pgno==0 ){    return SQLITE_DONE;  }  if( pgRec.pgno>(unsigned)pPager->dbSize ){    return SQLITE_OK;  }  if( format>=JOURNAL_FORMAT_3 ){    rc = read32bits(format, jfd, &cksum);    if( rc ) return rc;    if( pager_cksum(pPager, pgRec.pgno, pgRec.aData)!=cksum ){      return SQLITE_DONE;    }  }  /* Playback the page.  Update the in-memory copy of the page  ** at the same time, if there is one.  */  pPg = pager_lookup(pPager, pgRec.pgno);  TRACE2("PLAYBACK %d\n", pgRec.pgno);  sqliteOsSeek(&pPager->fd, (pgRec.pgno-1)*(off_t)SQLITE_PAGE_SIZE);  rc = sqliteOsWrite(&pPager->fd, pgRec.aData, SQLITE_PAGE_SIZE);  if( pPg ){    /* No page should ever be rolled back that is in use, except for page    ** 1 which is held in use in order to keep the lock on the database    ** active.    */    assert( pPg->nRef==0 || pPg->pgno==1 );    memcpy(PGHDR_TO_DATA(pPg), pgRec.aData, SQLITE_PAGE_SIZE);    memset(PGHDR_TO_EXTRA(pPg), 0, pPager->nExtra);    pPg->dirty = 0;    pPg->needSync = 0;    CODEC(pPager, PGHDR_TO_DATA(pPg), pPg->pgno, 3);  }  return rc;}