Module Name: src
Committed By: christos
Date: Sat Dec 14 18:04:56 UTC 2013
Modified Files:
src/lib/libc/db/btree: bt_overflow.c bt_utils.c
src/lib/libc/db/recno: rec_get.c rec_put.c rec_utils.c
Log Message:
It's been many years since realloc(NULL, size) == malloc(size). Also don't
destroy pointers on allocation errors so someone can free them later.
To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/lib/libc/db/btree/bt_overflow.c
cvs rdiff -u -r1.15 -r1.16 src/lib/libc/db/btree/bt_utils.c
cvs rdiff -u -r1.16 -r1.17 src/lib/libc/db/recno/rec_get.c
cvs rdiff -u -r1.20 -r1.21 src/lib/libc/db/recno/rec_put.c
cvs rdiff -u -r1.13 -r1.14 src/lib/libc/db/recno/rec_utils.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libc/db/btree/bt_overflow.c
diff -u src/lib/libc/db/btree/bt_overflow.c:1.19 src/lib/libc/db/btree/bt_overflow.c:1.20
--- src/lib/libc/db/btree/bt_overflow.c:1.19 Sat Nov 30 19:22:48 2013
+++ src/lib/libc/db/btree/bt_overflow.c Sat Dec 14 13:04:56 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: bt_overflow.c,v 1.19 2013/12/01 00:22:48 christos Exp $ */
+/* $NetBSD: bt_overflow.c,v 1.20 2013/12/14 18:04:56 christos Exp $ */
/*-
* Copyright (c) 1990, 1993, 1994
@@ -37,7 +37,7 @@
#endif
#include <sys/cdefs.h>
-__RCSID("$NetBSD: bt_overflow.c,v 1.19 2013/12/01 00:22:48 christos Exp $");
+__RCSID("$NetBSD: bt_overflow.c,v 1.20 2013/12/14 18:04:56 christos Exp $");
#include "namespace.h"
#include <sys/param.h>
@@ -97,9 +97,10 @@ __ovfl_get(BTREE *t, void *p, size_t *ss
#endif
/* Make the buffer bigger as necessary. */
if (*bufsz < sz) {
- *buf = *buf == NULL ? malloc(sz) : realloc(*buf, sz);
- if (*buf == NULL)
+ void *nbuf = realloc(*buf, sz);
+ if (nbuf == NULL)
return (RET_ERROR);
+ *buf = nbuf;
*bufsz = sz;
}
Index: src/lib/libc/db/btree/bt_utils.c
diff -u src/lib/libc/db/btree/bt_utils.c:1.15 src/lib/libc/db/btree/bt_utils.c:1.16
--- src/lib/libc/db/btree/bt_utils.c:1.15 Sat Nov 30 19:22:48 2013
+++ src/lib/libc/db/btree/bt_utils.c Sat Dec 14 13:04:56 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: bt_utils.c,v 1.15 2013/12/01 00:22:48 christos Exp $ */
+/* $NetBSD: bt_utils.c,v 1.16 2013/12/14 18:04:56 christos Exp $ */
/*-
* Copyright (c) 1990, 1993, 1994
@@ -37,7 +37,7 @@
#endif
#include <sys/cdefs.h>
-__RCSID("$NetBSD: bt_utils.c,v 1.15 2013/12/01 00:22:48 christos Exp $");
+__RCSID("$NetBSD: bt_utils.c,v 1.16 2013/12/14 18:04:56 christos Exp $");
#include <sys/param.h>
@@ -88,8 +88,7 @@ __bt_ret(BTREE *t, EPG *e, DBT *key, DBT
key->data = rkey->data;
} else if (copy || F_ISSET(t, B_DB_LOCK)) {
if (bl->ksize > rkey->size) {
- p = rkey->data == NULL ?
- malloc(bl->ksize) : realloc(rkey->data, bl->ksize);
+ p = realloc(rkey->data, bl->ksize);
if (p == NULL)
return (RET_ERROR);
rkey->data = p;
@@ -115,9 +114,7 @@ dataonly:
} else if (copy || F_ISSET(t, B_DB_LOCK)) {
/* Use +1 in case the first record retrieved is 0 length. */
if (bl->dsize + 1 > rdata->size) {
- p = rdata->data == NULL ?
- malloc(bl->dsize + 1) :
- realloc(rdata->data, bl->dsize + 1);
+ p = realloc(rdata->data, bl->dsize + 1);
if (p == NULL)
return (RET_ERROR);
rdata->data = p;
Index: src/lib/libc/db/recno/rec_get.c
diff -u src/lib/libc/db/recno/rec_get.c:1.16 src/lib/libc/db/recno/rec_get.c:1.17
--- src/lib/libc/db/recno/rec_get.c:1.16 Thu Sep 11 08:58:00 2008
+++ src/lib/libc/db/recno/rec_get.c Sat Dec 14 13:04:56 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: rec_get.c,v 1.16 2008/09/11 12:58:00 joerg Exp $ */
+/* $NetBSD: rec_get.c,v 1.17 2013/12/14 18:04:56 christos Exp $ */
/*-
* Copyright (c) 1990, 1993, 1994
@@ -34,7 +34,7 @@
#endif
#include <sys/cdefs.h>
-__RCSID("$NetBSD: rec_get.c,v 1.16 2008/09/11 12:58:00 joerg Exp $");
+__RCSID("$NetBSD: rec_get.c,v 1.17 2013/12/14 18:04:56 christos Exp $");
#include "namespace.h"
#include <sys/types.h>
@@ -127,11 +127,10 @@ __rec_fpipe(BTREE *t, recno_t top)
uint8_t *p;
if (t->bt_rdata.size < t->bt_reclen) {
- t->bt_rdata.data = t->bt_rdata.data == NULL ?
- malloc(t->bt_reclen) :
- realloc(t->bt_rdata.data, t->bt_reclen);
- if (t->bt_rdata.data == NULL)
+ void *np = realloc(t->bt_rdata.data, t->bt_reclen);
+ if (np == NULL)
return (RET_ERROR);
+ t->bt_rdata.data = np;
t->bt_rdata.size = t->bt_reclen;
}
data.data = t->bt_rdata.data;
@@ -196,13 +195,14 @@ __rec_vpipe(BTREE *t, recno_t top)
break;
}
if (sz == 0) {
+ void *np;
len = p - (uint8_t *)t->bt_rdata.data;
- t->bt_rdata.size += (sz = 256);
- t->bt_rdata.data = t->bt_rdata.data == NULL ?
- malloc(t->bt_rdata.size) :
- realloc(t->bt_rdata.data, t->bt_rdata.size);
- if (t->bt_rdata.data == NULL)
+ sz = t->bt_rdata.size + 256;
+ np = realloc(t->bt_rdata.data, sz);
+ if (np == NULL)
return (RET_ERROR);
+ t->bt_rdata.size = sz;
+ t->bt_rdata.data = np;
p = (uint8_t *)t->bt_rdata.data + len;
}
}
@@ -235,11 +235,10 @@ __rec_fmap(BTREE *t, recno_t top)
size_t len;
if (t->bt_rdata.size < t->bt_reclen) {
- t->bt_rdata.data = t->bt_rdata.data == NULL ?
- malloc(t->bt_reclen) :
- realloc(t->bt_rdata.data, t->bt_reclen);
- if (t->bt_rdata.data == NULL)
+ void *np = realloc(t->bt_rdata.data, t->bt_reclen);
+ if (np == NULL)
return (RET_ERROR);
+ t->bt_rdata.data = np;
t->bt_rdata.size = t->bt_reclen;
}
data.data = t->bt_rdata.data;
Index: src/lib/libc/db/recno/rec_put.c
diff -u src/lib/libc/db/recno/rec_put.c:1.20 src/lib/libc/db/recno/rec_put.c:1.21
--- src/lib/libc/db/recno/rec_put.c:1.20 Sat Nov 30 19:22:48 2013
+++ src/lib/libc/db/recno/rec_put.c Sat Dec 14 13:04:56 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: rec_put.c,v 1.20 2013/12/01 00:22:48 christos Exp $ */
+/* $NetBSD: rec_put.c,v 1.21 2013/12/14 18:04:56 christos Exp $ */
/*-
* Copyright (c) 1990, 1993, 1994
@@ -34,7 +34,7 @@
#endif
#include <sys/cdefs.h>
-__RCSID("$NetBSD: rec_put.c,v 1.20 2013/12/01 00:22:48 christos Exp $");
+__RCSID("$NetBSD: rec_put.c,v 1.21 2013/12/14 18:04:56 christos Exp $");
#include "namespace.h"
#include <sys/types.h>
@@ -87,11 +87,10 @@ __rec_put(const DB *dbp, DBT *key, const
goto einval;
if (t->bt_rdata.size < t->bt_reclen) {
- t->bt_rdata.data = t->bt_rdata.data == NULL ?
- malloc(t->bt_reclen) :
- realloc(t->bt_rdata.data, t->bt_reclen);
- if (t->bt_rdata.data == NULL)
+ void *np = realloc(t->bt_rdata.data, t->bt_reclen);
+ if (np == NULL)
return (RET_ERROR);
+ t->bt_rdata.data = np;
t->bt_rdata.size = t->bt_reclen;
}
memmove(t->bt_rdata.data, data->data, data->size);
Index: src/lib/libc/db/recno/rec_utils.c
diff -u src/lib/libc/db/recno/rec_utils.c:1.13 src/lib/libc/db/recno/rec_utils.c:1.14
--- src/lib/libc/db/recno/rec_utils.c:1.13 Sat Nov 30 19:22:48 2013
+++ src/lib/libc/db/recno/rec_utils.c Sat Dec 14 13:04:56 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: rec_utils.c,v 1.13 2013/12/01 00:22:48 christos Exp $ */
+/* $NetBSD: rec_utils.c,v 1.14 2013/12/14 18:04:56 christos Exp $ */
/*-
* Copyright (c) 1990, 1993, 1994
@@ -34,7 +34,7 @@
#endif
#include <sys/cdefs.h>
-__RCSID("$NetBSD: rec_utils.c,v 1.13 2013/12/01 00:22:48 christos Exp $");
+__RCSID("$NetBSD: rec_utils.c,v 1.14 2013/12/14 18:04:56 christos Exp $");
#include <sys/param.h>
@@ -71,9 +71,7 @@ __rec_ret(BTREE *t, EPG *e, recno_t nrec
/* We have to copy the key, it's not on the page. */
if (sizeof(nrec) > t->bt_rkey.size) {
- p = t->bt_rkey.data == NULL ?
- malloc(sizeof(nrec)) :
- realloc(t->bt_rkey.data, sizeof(nrec));
+ p = realloc(t->bt_rkey.data, sizeof(nrec));
if (p == NULL)
return (RET_ERROR);
t->bt_rkey.data = p;
@@ -101,9 +99,7 @@ dataonly:
} else if (F_ISSET(t, B_DB_LOCK)) {
/* Use +1 in case the first record retrieved is 0 length. */
if (rl->dsize + 1 > t->bt_rdata.size) {
- p = t->bt_rdata.data == NULL ?
- malloc(rl->dsize + 1) :
- realloc(t->bt_rdata.data, rl->dsize + 1);
+ p = realloc(t->bt_rdata.data, rl->dsize + 1);
if (p == NULL)
return (RET_ERROR);
t->bt_rdata.data = p;