SQLite

Check-in [d00c8242c6]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Fix a page reference leak that could occur after an IO error. (CVS 4036)
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: d00c8242c610476c15d6eb4dc53fecab3971fea1
User & Date: danielk1977 2007-05-24 09:20:16.000
Context
2007-05-24
09:41
Remove an assert() statement that may not be true if an IO or malloc error has occured. (CVS 4037) (check-in: 16c8e9c20c user: danielk1977 tags: trunk)
09:20
Fix a page reference leak that could occur after an IO error. (CVS 4036) (check-in: d00c8242c6 user: danielk1977 tags: trunk)
07:47
Remove an incorrect assert() statement that was being triggered by ioerr tests run in utf-16 mode. (CVS 4035) (check-in: c6575173be user: danielk1977 tags: trunk)
Changes
Side-by-Side Diff Ignore Whitespace Patch
Changes to src/btree.c.
1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
1
2
3
4
5
6
7
8
9
10
11

12
13
14
15
16
17
18
19











-
+







/*
** 2004 April 6
**
** The author disclaims copyright to this source code.  In place of
** a legal notice, here is a blessing:
**
**    May you do good and not evil.
**    May you find forgiveness for yourself and forgive others.
**    May you share freely, never taking more than you give.
**
*************************************************************************
** $Id: btree.c,v 1.387 2007/05/24 07:47:07 danielk1977 Exp $
** $Id: btree.c,v 1.388 2007/05/24 09:20:16 danielk1977 Exp $
**
** This file implements a external (disk-based) database using BTrees.
** See the header comment on "btreeInt.h" for additional information.
** Including a description of file format and an overview of operation.
*/
#include "btreeInt.h"

4240
4241
4242
4243
4244
4245
4246
4247
4248


4249
4250
4251

4252
4253
4254
4255
4256
4257
4258
4240
4241
4242
4243
4244
4245
4246


4247
4248
4249

4250
4251
4252
4253
4254
4255
4256
4257
4258







-
-
+
+

-

+







#ifndef SQLITE_OMIT_AUTOVACUUM
  /* If this is an auto-vacuum database, update the pointer map
  ** with entries for the new page, and any pointer from the 
  ** cell on the page to an overflow page.
  */
  if( pBt->autoVacuum ){
    rc = ptrmapPut(pBt, pgnoNew, PTRMAP_BTREE, pParent->pgno);
    if( rc!=SQLITE_OK ){
      return rc;
    if( rc==SQLITE_OK ){
      rc = ptrmapPutOvfl(pNew, 0);
    }
    rc = ptrmapPutOvfl(pNew, 0);
    if( rc!=SQLITE_OK ){
      releasePage(pNew);
      return rc;
    }
  }
#endif

  /* Release the reference to the new page and balance the parent page,
  ** in case the divider cell inserted caused it to become overfull.