From f39eaefb651064ea6b4b8f030ec98f98c94fe95a Mon Sep 17 00:00:00 2001
From: Vicent Marti <tanoku@gmail.com>
Date: Mon, 30 May 2016 16:07:07 +0200
Subject: node: Memory diet

Reduce the storage size for the `cmark_code` struct
---
 src/blocks.c | 2 +-
 src/node.h   | 7 +++----
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/blocks.c b/src/blocks.c
index e4d5bf7..aae81c3 100644
--- a/src/blocks.c
+++ b/src/blocks.c
@@ -897,7 +897,7 @@ static void open_new_blocks(cmark_parser *parser, cmark_node **container,
                              parser->first_nonspace + 1);
       (*container)->as.code.fenced = true;
       (*container)->as.code.fence_char = peek_at(input, parser->first_nonspace);
-      (*container)->as.code.fence_length = matched;
+      (*container)->as.code.fence_length = (matched > 255) ? 255 : matched;
       (*container)->as.code.fence_offset =
           (int8_t)(parser->first_nonspace - parser->offset);
       (*container)->as.code.info = cmark_chunk_literal("");
diff --git a/src/node.h b/src/node.h
index 84b2560..65d857f 100644
--- a/src/node.h
+++ b/src/node.h
@@ -25,11 +25,10 @@ typedef struct {
 typedef struct {
   cmark_chunk info;
   cmark_chunk literal;
-  int fence_length;
-  /* fence_offset must be 0-3, so we can use int8_t */
-  int8_t fence_offset;
+  uint8_t fence_length;
+  uint8_t fence_offset;
   unsigned char fence_char;
-  bool fenced;
+  int8_t fenced;
 } cmark_code;
 
 typedef struct {
-- 
cgit v1.2.3