ext/commonmarker/cmark/src/render.c in commonmarker-0.9.1 vs ext/commonmarker/cmark/src/render.c in commonmarker-0.9.2
- old
+ new
@@ -2,10 +2,11 @@
#include "buffer.h"
#include "chunk.h"
#include "cmark.h"
#include "utf8.h"
#include "render.h"
+#include "node.h"
static CMARK_INLINE void S_cr(cmark_renderer *renderer) {
if (renderer->need_cr < 1) {
renderer->need_cr = 1;
}
@@ -17,20 +18,20 @@
}
}
static void S_out(cmark_renderer *renderer, const char *source, bool wrap,
cmark_escaping escape) {
- int length = cmark_strbuf_safe_strlen(source);
+ int length = strlen(source);
unsigned char nextc;
int32_t c;
int i = 0;
int last_nonspace;
int len;
cmark_chunk remainder = cmark_chunk_literal("");
int k = renderer->buffer->size - 1;
- wrap = wrap && !renderer->no_wrap;
+ wrap = wrap && !renderer->no_linebreaks;
if (renderer->in_tight_list_item && renderer->need_cr > 1) {
renderer->need_cr = 1;
}
while (renderer->need_cr) {
@@ -106,21 +107,21 @@
// earlier place where the line could be broken:
if (renderer->width > 0 && renderer->column > renderer->width &&
!renderer->begin_line && renderer->last_breakable > 0) {
// copy from last_breakable to remainder
- cmark_chunk_set_cstr(&remainder, (char *)renderer->buffer->ptr +
+ cmark_chunk_set_cstr(renderer->mem, &remainder, (char *)renderer->buffer->ptr +
renderer->last_breakable + 1);
// truncate at last_breakable
cmark_strbuf_truncate(renderer->buffer, renderer->last_breakable);
// add newline, prefix, and remainder
cmark_strbuf_putc(renderer->buffer, '\n');
cmark_strbuf_put(renderer->buffer, renderer->prefix->ptr,
renderer->prefix->size);
cmark_strbuf_put(renderer->buffer, remainder.data, remainder.len);
renderer->column = renderer->prefix->size + remainder.len;
- cmark_chunk_free(&remainder);
+ cmark_chunk_free(renderer->mem, &remainder);
renderer->last_breakable = 0;
renderer->begin_line = false;
renderer->begin_content = false;
}
@@ -144,17 +145,18 @@
void (*outc)(cmark_renderer *, cmark_escaping, int32_t,
unsigned char),
int (*render_node)(cmark_renderer *renderer,
cmark_node *node,
cmark_event_type ev_type, int options)) {
- cmark_strbuf pref = GH_BUF_INIT;
- cmark_strbuf buf = GH_BUF_INIT;
+ cmark_mem *mem = cmark_node_mem(root);
+ cmark_strbuf pref = CMARK_BUF_INIT(mem);
+ cmark_strbuf buf = CMARK_BUF_INIT(mem);
cmark_node *cur;
cmark_event_type ev_type;
char *result;
cmark_iter *iter = cmark_iter_new(root);
- cmark_renderer renderer = {&buf, &pref, 0, width, 0,
+ cmark_renderer renderer = {mem, &buf, &pref, 0, width, 0,
0, true, true, false, false,
outc, S_cr, S_blankline, S_out};
while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) {
cur = cmark_iter_get_node(iter);