From e8af78ed4c0ad42a1e5306b5980ba3ef3c62d899 Mon Sep 17 00:00:00 2001 From: ryanfleury Date: Tue, 26 Jan 2021 14:15:54 -0700 Subject: [PATCH] MD_NodeTable_Insert preserve order --- .../example_site/generated/blog_main.html | 30 +++++++++---------- source/md_impl.c | 18 +++++++++-- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/samples/static_site_generator/example_site/generated/blog_main.html b/samples/static_site_generator/example_site/generated/blog_main.html index 75b8ea3..82e9b84 100644 --- a/samples/static_site_generator/example_site/generated/blog_main.html +++ b/samples/static_site_generator/example_site/generated/blog_main.html @@ -25,21 +25,6 @@

Blog

diff --git a/source/md_impl.c b/source/md_impl.c index 0cd1d99..18e3fd0 100644 --- a/source/md_impl.c +++ b/source/md_impl.c @@ -974,8 +974,22 @@ MD_NodeTable_Insert(MD_NodeTable *table, MD_NodeTableCollisionRule collision_rul slot = _MD_PushArray(_MD_GetCtx(), MD_NodeTableSlot, 1); if(slot) { - slot->next = table->table[index]; - table->table[index] = slot; + slot->next = 0; + if(table->table[index]) + { + for(MD_NodeTableSlot *old_slot = table->table[index]; old_slot; old_slot = old_slot->next) + { + if(old_slot->next == 0) + { + old_slot->next = slot; + break; + } + } + } + else + { + table->table[index] = slot; + } } }