cmark

My personal build of CMark ✏️

Commit
2f17435eb14c331a504611fbe5b47fd476950883
Parent
05177ec8b76ff095dfd58a469984a8c5bc3cd882
Author
John MacFarlane <jgm@berkeley.edu>
Date

LaTeX writer: fixed some compile errors on MSVC.

Diffstat

1 file changed, 14 insertions, 8 deletions

Status File Name N° Changes Insertions Deletions
Modified src/latex.c 22 14 8
diff --git a/src/latex.c b/src/latex.c
@@ -354,10 +354,10 @@ S_render_node(cmark_node *node, cmark_event_type ev_type,
 	cmark_node *tmp;
 	cmark_chunk *code;
 	int list_number;
+	int len;
 	char list_number_string[20];
 	bool entering = (ev_type == CMARK_EVENT_ENTER);
 	cmark_list_type list_type;
-	cmark_chunk list_name;
 	cmark_chunk url;
 	const char* roman_numerals[] = { "", "i", "ii", "iii", "iv", "v",
 	                                 "vi", "vii", "viii", "ix", "x"
@@ -397,21 +397,26 @@ S_render_node(cmark_node *node, cmark_event_type ev_type,
 
 	case CMARK_NODE_LIST:
 		list_type = cmark_node_get_list_type(node);
-		list_name = cmark_chunk_literal(
-		                list_type == CMARK_ORDERED_LIST ?
-		                "enumerate" : "itemize");
 		if (entering) {
 			if (list_type == CMARK_ORDERED_LIST) {
 				state->enumlevel++;
 			}
 			lit(state, "\\begin{", false);
-			out(state, list_name, false, false);
+			lit(state,
+			    list_type == CMARK_ORDERED_LIST ?
+			    "enumerate" : "itemize", false);
 			lit(state, "}", false);
 			cr(state);
 			list_number = cmark_node_get_list_start(node);
 			if (list_number > 1) {
-				snprintf(list_number_string, 19,
+				len = snprintf(list_number_string, 19,
 				         "%d", list_number);
+#ifndef HAVE_C99_SNPRINTF
+				// Assume we're on Windows.
+				if (len < 0) {
+					len = _vscprintf("%d", list_number);
+				}
+#endif
 				lit(state, "\\setcounter{enum", false);
 				lit(state, (char *)roman_numerals[state->enumlevel],
 				    false);
@@ -427,11 +432,12 @@ S_render_node(cmark_node *node, cmark_event_type ev_type,
 				state->enumlevel--;
 			}
 			lit(state, "\\end{", false);
-			out(state, list_name, false, false);
+			lit(state,
+			    list_type == CMARK_ORDERED_LIST ?
+			    "enumerate" : "itemize", false);
 			lit(state, "}", false);
 			blankline(state);
 		}
-		cmark_chunk_free(&list_name);
 		break;
 
 	case CMARK_NODE_ITEM: