From 5b4550ab0fb6ef28c9baa79db59ec789b998cf47 Mon Sep 17 00:00:00 2001
From: "Sven M. Hallberg" <pesco@khjk.org>
Date: Tue, 8 Sep 2015 16:19:45 +0200
Subject: [PATCH] make MARK a constant that points to itself

---
 src/backends/llk.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/backends/llk.c b/src/backends/llk.c
index ec5f7f71..898bfdcb 100644
--- a/src/backends/llk.c
+++ b/src/backends/llk.c
@@ -286,7 +286,7 @@ typedef struct {
 // execute on their corresponding result.
 // also on the stack below the mark, we store the previously accumulated
 // value for the surrounding production.
-static void *MARK = (void *)-1; // stack frame delimiter
+static void const * const MARK = &MARK; // stack frame delimiter
 
 static HLLkState *llk_parse_start_(HAllocator* mm__, const HParser* parser)
 {
@@ -421,9 +421,9 @@ static HCountedArray *llk_parse_chunk_(HLLkState *s, const HParser* parser,
       assert(!p->items[0] || p->items[0] != x);
 
       // push stack frame
-      h_slist_push(stack, seq);   // save current partial value
-      h_slist_push(stack, x);     // save the nonterminal
-      h_slist_push(stack, MARK);  // frame delimiter
+      h_slist_push(stack, seq);           // save current partial value
+      h_slist_push(stack, x);             // save the nonterminal
+      h_slist_push(stack, (void *)MARK);  // frame delimiter
 
       // open a fresh result sequence
       seq = h_carray_new(arena);
-- 
GitLab