]> git.cameronkatri.com Git - mandoc.git/blobdiff - macro.c
Added argv regression tests.
[mandoc.git] / macro.c
diff --git a/macro.c b/macro.c
index 7f49691ae8f41b8158b8b72f397faf89741a16c5..1f4642fd9063632383c606a33d860a153f5a6c1f 100644 (file)
--- a/macro.c
+++ b/macro.c
@@ -1,4 +1,4 @@
-/* $Id: macro.c,v 1.53 2009/02/26 14:56:27 kristaps Exp $ */
+/* $Id: macro.c,v 1.56 2009/03/05 12:08:53 kristaps Exp $ */
 /*
  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
  *
 /*
  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
  *
  * macro. 
  */
 
  * macro. 
  */
 
+/* 
+ * FIXME: don't use static mdoc_argv values, as they require us to do a
+ * complicated copy-over when actually assigning them to dynamic memory.
+ */
+
 #include "private.h"
 
 static int       macro_obsolete(MACRO_PROT_ARGS);
 #include "private.h"
 
 static int       macro_obsolete(MACRO_PROT_ARGS);
@@ -750,7 +755,8 @@ macro_text(MACRO_PROT_ARGS)
                return(perr(mdoc, line, ppos, EARGVLIM));
        }
 
                return(perr(mdoc, line, ppos, EARGVLIM));
        }
 
-       c = mdoc_elem_alloc(mdoc, line, ppos, tok, argc, argv);
+       c = mdoc_elem_alloc(mdoc, line, ppos, 
+                       tok, (size_t)argc, argv);
 
        if (0 == c) {
                mdoc_argv_free(argc, argv);
 
        if (0 == c) {
                mdoc_argv_free(argc, argv);
@@ -795,6 +801,8 @@ macro_text(MACRO_PROT_ARGS)
                        return(0);
                }
 
                        return(0);
                }
 
+               /* FIXME: .Fl and .Ar handling of `|'. */
+
                if (ARGS_QWORD != w && mdoc_isdelim(p)) {
                        if (0 == lastpunct && ! rewind_elem(mdoc, tok)) {
                                mdoc_argv_free(argc, argv);
                if (ARGS_QWORD != w && mdoc_isdelim(p)) {
                        if (0 == lastpunct && ! rewind_elem(mdoc, tok)) {
                                mdoc_argv_free(argc, argv);
@@ -802,8 +810,8 @@ macro_text(MACRO_PROT_ARGS)
                        }
                        lastpunct = 1;
                } else if (lastpunct) {
                        }
                        lastpunct = 1;
                } else if (lastpunct) {
-                       c = mdoc_elem_alloc(mdoc, line, 
-                                       ppos, tok, argc, argv);
+                       c = mdoc_elem_alloc(mdoc, line, ppos, 
+                                       tok, (size_t)argc, argv);
                        if (0 == c) {
                                mdoc_argv_free(argc, argv);
                                return(0);
                        if (0 == c) {
                                mdoc_argv_free(argc, argv);
                                return(0);
@@ -1225,7 +1233,9 @@ macro_constant_delimited(MACRO_PROT_ARGS)
                return(perr(mdoc, line, ppos, EARGVLIM));
        }
 
                return(perr(mdoc, line, ppos, EARGVLIM));
        }
 
-       c = mdoc_elem_alloc(mdoc, line, ppos, tok, argc, argv);
+       c = mdoc_elem_alloc(mdoc, line, ppos, 
+                       tok, (size_t)argc, argv);
+
        mdoc_argv_free(argc, argv);
 
        if (0 == c)
        mdoc_argv_free(argc, argv);
 
        if (0 == c)
@@ -1316,7 +1326,9 @@ macro_constant(MACRO_PROT_ARGS)
                return(perr(mdoc, line, ppos, EARGVLIM));
        }
 
                return(perr(mdoc, line, ppos, EARGVLIM));
        }
 
-       c = mdoc_elem_alloc(mdoc, line, ppos, tok, argc, argv);
+       c = mdoc_elem_alloc(mdoc, line, ppos, 
+                       tok, (size_t)argc, argv);
+
        mdoc_argv_free(argc, argv);
 
        if (0 == c)
        mdoc_argv_free(argc, argv);
 
        if (0 == c)