summaryrefslogtreecommitdiffstats
path: root/lib/libdisk/chunk.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libdisk/chunk.c')
-rw-r--r--lib/libdisk/chunk.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/libdisk/chunk.c b/lib/libdisk/chunk.c
index ef4192d..d49a94e 100644
--- a/lib/libdisk/chunk.c
+++ b/lib/libdisk/chunk.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: chunk.c,v 1.4 1995/04/30 06:09:24 phk Exp $
+ * $Id: chunk.c,v 1.5 1995/05/01 21:30:22 jkh Exp $
*
*/
@@ -79,6 +79,8 @@ Free_Chunk(struct chunk *c1)
{
/* XXX remove all chunks which "ref" us */
if(!c1) return;
+ if(c1->private && c1->private_free)
+ (*c1->private_free)(c1->private);
if(c1->part)
Free_Chunk(c1->part);
if(c1->next)
@@ -96,6 +98,8 @@ Clone_Chunk(struct chunk *c1)
c2 = new_chunk();
if (!c2) err(1,"malloc failed");
*c2 = *c1;
+ if (c1->private && c1->private_clone)
+ c2->private_clone(c2->private);
c2->name = strdup(c2->name);
c2->next = Clone_Chunk(c2->next);
c2->part = Clone_Chunk(c2->part);
@@ -109,13 +113,12 @@ Insert_Chunk(struct chunk *c2, u_long offset, u_long size, char *name, chunk_e t
ct = new_chunk();
if (!ct) err(1,"malloc failed");
+ memset(ct,0,sizeof *ct);
ct->offset = offset;
ct->size = size;
ct->end = offset + size - 1;
ct->type = type;
ct->name = strdup(name);
- ct->next = 0;
- ct->part = 0;
ct->subtype = subtype;
ct->flags = flags;
OpenPOWER on IntegriCloud