-/* $Id: mdoc.c,v 1.155 2010/07/01 23:01:47 kristaps Exp $ */
+/* $Id: mdoc.c,v 1.159 2010/07/18 17:00:26 schwarze Exp $ */
/*
- * 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
* purpose with or without fee is hereby granted, provided that the above
#include <time.h>
#include "mandoc.h"
-#include "regs.h"
#include "libmdoc.h"
#include "libmandoc.h"
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 (p->data.Bd)
free(p->data.Bd);
if (MDOC_Bl == p->tok && MDOC_BLOCK == p->type)
if (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)
free(p->string);
assert(buf < end);
- if (mandoc_eos(buf+offs, (size_t)(end-buf-offs)))
+ if (mandoc_eos(buf+offs, (size_t)(end-buf-offs), 0))
m->last->flags |= MDOC_EOS;
return(1);