summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2016-05-30 16:07:07 +0200
committerJohn MacFarlane <jgm@berkeley.edu>2016-06-06 15:39:06 -0700
commitf39eaefb651064ea6b4b8f030ec98f98c94fe95a (patch)
tree91028c68ef9b83c58ca85545cddaa4839e170ba2
parent8e11c6d7a2f43bd507cc0349843c6fde8392eccb (diff)
node: Memory diet
Reduce the storage size for the `cmark_code` struct
-rw-r--r--src/blocks.c2
-rw-r--r--src/node.h7
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 {