/ Check-in [e9849292]
Login
SQLite training in Houston TX on 2019-11-05 (details)
Part of the 2019 Tcl Conference

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

Overview
Comment:Cause sqlite3_exec() to return SQLITE_NOMEM if it cannot allocate memory to hold the error message for some other error. (CVS 6844)
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: e9849292ab741f4c86203b2629dbe116f9b527c8
User & Date: drh 2009-07-03 19:18:43
Context
2009-07-03
19:19
Remove unused code (that was commented out) from prepare.c. Remove an incorrect NEVER() macro. Fix the comment on schemaIsValid() to correctly describe its return behavior. (CVS 6845) check-in: 90deb658 user: drh tags: trunk
19:18
Cause sqlite3_exec() to return SQLITE_NOMEM if it cannot allocate memory to hold the error message for some other error. (CVS 6844) check-in: e9849292 user: drh tags: trunk
17:23
Remove an unused variable from the test code in test3.c. (CVS 6843) check-in: 9e35bec9 user: drh tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/legacy.c.

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
...
128
129
130
131
132
133
134


135
136
137
138
139
140
141
142
143
**
*************************************************************************
** Main file for the SQLite library.  The routines in this file
** implement the programmer interface to the library.  Routines in
** other files are for internal use by SQLite and should not be
** accessed by users of the library.
**
** $Id: legacy.c,v 1.33 2009/05/05 20:02:48 drh Exp $
*/

#include "sqliteInt.h"

/*
** Execute SQL code.  Return one of the SQLITE_ success/failure
** codes.  Also write an error message into memory obtained from
................................................................................

  rc = sqlite3ApiExit(db, rc);
  if( rc!=SQLITE_OK && ALWAYS(rc==sqlite3_errcode(db)) && pzErrMsg ){
    int nErrMsg = 1 + sqlite3Strlen30(sqlite3_errmsg(db));
    *pzErrMsg = sqlite3Malloc(nErrMsg);
    if( *pzErrMsg ){
      memcpy(*pzErrMsg, sqlite3_errmsg(db), nErrMsg);


    }
  }else if( pzErrMsg ){
    *pzErrMsg = 0;
  }

  assert( (rc&db->errMask)==rc );
  sqlite3_mutex_leave(db->mutex);
  return rc;
}







|







 







>
>









10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
...
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
**
*************************************************************************
** Main file for the SQLite library.  The routines in this file
** implement the programmer interface to the library.  Routines in
** other files are for internal use by SQLite and should not be
** accessed by users of the library.
**
** $Id: legacy.c,v 1.34 2009/07/03 19:18:43 drh Exp $
*/

#include "sqliteInt.h"

/*
** Execute SQL code.  Return one of the SQLITE_ success/failure
** codes.  Also write an error message into memory obtained from
................................................................................

  rc = sqlite3ApiExit(db, rc);
  if( rc!=SQLITE_OK && ALWAYS(rc==sqlite3_errcode(db)) && pzErrMsg ){
    int nErrMsg = 1 + sqlite3Strlen30(sqlite3_errmsg(db));
    *pzErrMsg = sqlite3Malloc(nErrMsg);
    if( *pzErrMsg ){
      memcpy(*pzErrMsg, sqlite3_errmsg(db), nErrMsg);
    }else{
      rc = SQLITE_NOMEM;
    }
  }else if( pzErrMsg ){
    *pzErrMsg = 0;
  }

  assert( (rc&db->errMask)==rc );
  sqlite3_mutex_leave(db->mutex);
  return rc;
}