]>
Commit | Line | Data |
---|---|---|
6a2508d3 JB |
1 | *** db/db_cam.c.orig 2006-01-11 03:19:21.000000000 +1100 |
2 | --- db/db_cam.c 2006-03-01 13:59:01.000000000 +1100 | |
3 | *************** | |
4 | *** 579,589 **** | |
5 | flags == DB_NEXT || flags == DB_NEXT_DUP || flags == DB_PREV)) { | |
6 | if (tmp_rmw && (ret = dbc_arg->c_am_writelock(dbc_arg)) != 0) | |
7 | return (ret); | |
8 | ! if ((ret = __db_c_idup(cp->opd, &opd, DB_POSITION)) != 0) | |
9 | return (ret); | |
10 | ||
11 | ! switch (ret = | |
12 | ! opd->c_am_get(opd, key, data, flags, NULL)) { | |
13 | case 0: | |
14 | goto done; | |
15 | case DB_NOTFOUND: | |
16 | --- 579,590 ---- | |
17 | flags == DB_NEXT || flags == DB_NEXT_DUP || flags == DB_PREV)) { | |
18 | if (tmp_rmw && (ret = dbc_arg->c_am_writelock(dbc_arg)) != 0) | |
19 | return (ret); | |
20 | ! if (F_ISSET(dbc_arg, DBC_TRANSIENT)) | |
21 | ! opd = cp->opd; | |
22 | ! else if ((ret = __db_c_idup(cp->opd, &opd, DB_POSITION)) != 0) | |
23 | return (ret); | |
24 | ||
25 | ! switch (ret = opd->c_am_get(opd, key, data, flags, NULL)) { | |
26 | case 0: | |
27 | goto done; | |
28 | case DB_NOTFOUND: | |
29 | *************** | |
30 | *** 596,607 **** | |
31 | --- 597,614 ---- | |
32 | if ((ret = __db_c_close(opd)) != 0) | |
33 | goto err; | |
34 | opd = NULL; | |
35 | + if (F_ISSET(dbc_arg, DBC_TRANSIENT)) | |
36 | + cp->opd = NULL; | |
37 | break; | |
38 | } | |
39 | goto err; | |
40 | default: | |
41 | goto err; | |
42 | } | |
43 | + } else if (cp->opd != NULL && F_ISSET(dbc_arg, DBC_TRANSIENT)) { | |
44 | + if ((ret = __db_c_close(cp->opd)) != 0) | |
45 | + goto err; | |
46 | + cp->opd = NULL; | |
47 | } | |
48 | ||
49 | /* |