Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(287)

Side by Side Diff: third_party/sqlite/src/fault.c

Issue 3108030: Move bundled copy of sqlite one level deeper to better separate it... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/sqlite/src/expr.c ('k') | third_party/sqlite/src/func.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 ** 2008 Jan 22
3 **
4 ** The author disclaims copyright to this source code. In place of
5 ** a legal notice, here is a blessing:
6 **
7 ** May you do good and not evil.
8 ** May you find forgiveness for yourself and forgive others.
9 ** May you share freely, never taking more than you give.
10 **
11 *************************************************************************
12 **
13 ** $Id: fault.c,v 1.11 2008/09/02 00:52:52 drh Exp $
14 */
15
16 /*
17 ** This file contains code to support the concept of "benign"
18 ** malloc failures (when the xMalloc() or xRealloc() method of the
19 ** sqlite3_mem_methods structure fails to allocate a block of memory
20 ** and returns 0).
21 **
22 ** Most malloc failures are non-benign. After they occur, SQLite
23 ** abandons the current operation and returns an error code (usually
24 ** SQLITE_NOMEM) to the user. However, sometimes a fault is not necessarily
25 ** fatal. For example, if a malloc fails while resizing a hash table, this
26 ** is completely recoverable simply by not carrying out the resize. The
27 ** hash table will continue to function normally. So a malloc failure
28 ** during a hash table resize is a benign fault.
29 */
30
31 #include "sqliteInt.h"
32
33 #ifndef SQLITE_OMIT_BUILTIN_TEST
34
35 /*
36 ** Global variables.
37 */
38 typedef struct BenignMallocHooks BenignMallocHooks;
39 static SQLITE_WSD struct BenignMallocHooks {
40 void (*xBenignBegin)(void);
41 void (*xBenignEnd)(void);
42 } sqlite3Hooks = { 0, 0 };
43
44 /* The "wsdHooks" macro will resolve to the appropriate BenignMallocHooks
45 ** structure. If writable static data is unsupported on the target,
46 ** we have to locate the state vector at run-time. In the more common
47 ** case where writable static data is supported, wsdHooks can refer directly
48 ** to the "sqlite3Hooks" state vector declared above.
49 */
50 #ifdef SQLITE_OMIT_WSD
51 # define wsdHooksInit \
52 BenignMallocHooks *x = &GLOBAL(BenignMallocHooks,sqlite3Hooks)
53 # define wsdHooks x[0]
54 #else
55 # define wsdHooksInit
56 # define wsdHooks sqlite3Hooks
57 #endif
58
59
60 /*
61 ** Register hooks to call when sqlite3BeginBenignMalloc() and
62 ** sqlite3EndBenignMalloc() are called, respectively.
63 */
64 void sqlite3BenignMallocHooks(
65 void (*xBenignBegin)(void),
66 void (*xBenignEnd)(void)
67 ){
68 wsdHooksInit;
69 wsdHooks.xBenignBegin = xBenignBegin;
70 wsdHooks.xBenignEnd = xBenignEnd;
71 }
72
73 /*
74 ** This (sqlite3EndBenignMalloc()) is called by SQLite code to indicate that
75 ** subsequent malloc failures are benign. A call to sqlite3EndBenignMalloc()
76 ** indicates that subsequent malloc failures are non-benign.
77 */
78 void sqlite3BeginBenignMalloc(void){
79 wsdHooksInit;
80 if( wsdHooks.xBenignBegin ){
81 wsdHooks.xBenignBegin();
82 }
83 }
84 void sqlite3EndBenignMalloc(void){
85 wsdHooksInit;
86 if( wsdHooks.xBenignEnd ){
87 wsdHooks.xBenignEnd();
88 }
89 }
90
91 #endif /* #ifndef SQLITE_OMIT_BUILTIN_TEST */
OLDNEW
« no previous file with comments | « third_party/sqlite/src/expr.c ('k') | third_party/sqlite/src/func.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698