version 1.155, 2010/07/01 23:01:47 |
version 1.157, 2010/07/04 22:04:04 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> |
|
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
|
|
mdoc_node_free(struct mdoc_node *p) |
mdoc_node_free(struct mdoc_node *p) |
{ |
{ |
|
|
|
/* |
|
* XXX: if these end up being problematic in terms of memory |
|
* management and dereferencing freed blocks, then make them |
|
* into reference-counted double-pointers. |
|
*/ |
|
|
if (MDOC_Bd == p->tok && MDOC_BLOCK == p->type) |
if (MDOC_Bd == p->tok && MDOC_BLOCK == p->type) |
if (p->data.Bd) |
if (p->data.Bd) |
free(p->data.Bd); |
free(p->data.Bd); |
if (MDOC_Bl == p->tok && MDOC_BLOCK == p->type) |
if (MDOC_Bl == p->tok && MDOC_BLOCK == p->type) |
if (p->data.Bl) |
if (p->data.Bl) |
free(p->data.Bl); |
free(p->data.Bl); |
|
if (MDOC_Bf == p->tok && MDOC_HEAD == p->type) |
|
if (p->data.Bf) |
|
free(p->data.Bf); |
|
|
if (p->string) |
if (p->string) |
free(p->string); |
free(p->string); |