diff options
Diffstat (limited to 'lib/libc/db/btree/bt_delete.c')
| -rw-r--r-- | lib/libc/db/btree/bt_delete.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/libc/db/btree/bt_delete.c b/lib/libc/db/btree/bt_delete.c index 326618b1f609..e512c8423da2 100644 --- a/lib/libc/db/btree/bt_delete.c +++ b/lib/libc/db/btree/bt_delete.c @@ -35,7 +35,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)bt_delete.c 8.1 (Berkeley) 6/4/93"; +static char sccsid[] = "@(#)bt_delete.c 8.2 (Berkeley) 9/7/93"; #endif /* LIBC_SCCS and not lint */ #include <sys/types.h> @@ -70,10 +70,18 @@ __bt_delete(dbp, key, flags) int status; t = dbp->internal; + + /* Toss any page pinned across calls. */ + if (t->bt_pinned != NULL) { + mpool_put(t->bt_mp, t->bt_pinned, 0); + t->bt_pinned = NULL; + } + if (ISSET(t, B_RDONLY)) { errno = EPERM; return (RET_ERROR); } + switch(flags) { case 0: status = bt_bdelete(t, key); |
