Loading...
--- Libc/Libc-997.90.3/gen/disklabel.c
+++ Libc/Libc-583/gen/disklabel.c
@@ -76,10 +76,12 @@
static int gettype(char *, char **);
struct disklabel *
-getdiskbyname(const char *name)
+getdiskbyname(name)
+ const char *name;
{
- static struct disklabel *dp = NULL;
- struct partition *pp;
+ static struct disklabel disk;
+ register struct disklabel *dp = &disk;
+ register struct partition *pp;
char *buf;
char *db_array[2] = { _PATH_DISKTAB, 0 };
char *cp, *cq; /* can't be register */
@@ -90,14 +92,7 @@
if (cgetent(&buf, db_array, (char *) name) < 0)
return NULL;
- if (dp == NULL) {
- dp = malloc(sizeof(struct disklabel));
- if (dp == NULL) {
- return NULL;
- }
- }
- memset(dp, 0, sizeof(struct disklabel));
-
+ bzero((char *)&disk, sizeof(disk));
/*
* typename
*/