]> git.cameronkatri.com Git - mandoc.git/blobdiff - eqn.c
bugfix: make sure all variables are properly initialized
[mandoc.git] / eqn.c
diff --git a/eqn.c b/eqn.c
index 9c3b978358805af7ac02695c584096d6112ab0bd..2a46ec6d4b75ae80075e758b16361e010f904bdb 100644 (file)
--- a/eqn.c
+++ b/eqn.c
@@ -1,4 +1,4 @@
-/*     $Id: eqn.c,v 1.37 2011/07/23 18:44:42 kristaps Exp $ */
+/*     $Id: eqn.c,v 1.39 2014/03/23 11:25:26 schwarze Exp $ */
 /*
  * Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -26,6 +26,7 @@
 #include <time.h>
 
 #include "mandoc.h"
+#include "mandoc_aux.h"
 #include "libmandoc.h"
 #include "libroff.h"
 
@@ -294,8 +295,7 @@ eqn_read(struct eqn_node **epp, int ln,
         */
 
        if (0 == strncmp(p, ".EN", 3)) {
-               er = eqn_end(ep);
-               *epp = NULL;
+               er = eqn_end(epp);
                p += 3;
                while (' ' == *p || '\t' == *p)
                        p++;
@@ -333,7 +333,7 @@ eqn_alloc(const char *name, int pos, int line, struct mparse *parse)
 
        p = mandoc_calloc(1, sizeof(struct eqn_node));
 
-       if ('\0' != *name) {
+       if (name && '\0' != *name) {
                sz = strlen(name);
                assert(sz);
                do {
@@ -352,11 +352,15 @@ eqn_alloc(const char *name, int pos, int line, struct mparse *parse)
 }
 
 enum rofferr
-eqn_end(struct eqn_node *ep)
+eqn_end(struct eqn_node **epp)
 {
+       struct eqn_node *ep;
        struct eqn_box  *root;
        enum eqn_rest    c;
 
+       ep = *epp;
+       *epp = NULL;
+
        ep->eqn.root = mandoc_calloc(1, sizeof(struct eqn_box));
 
        root = ep->eqn.root;