diff tern.c @ 2207:de3d20e58555

Mostly fix label sorting post-refactor
author Michael Pavone <pavone@retrodev.com>
date Sat, 27 Aug 2022 17:35:28 -0700
parents 193b804c9845
children 8483c685cf03
line wrap: on
line diff
--- a/tern.c	Sat Aug 27 17:07:57 2022 -0700
+++ b/tern.c	Sat Aug 27 17:35:28 2022 -0700
@@ -293,13 +293,33 @@
 
 char * tern_int_key(uint32_t key, char * buf)
 {
-	char * cur = buf;
+
+	int len = 0;
+	uint32_t tmp = key;
+	while (tmp)
+	{
+		tmp >>= 7;
+		++len;
+	}
+	buf[len] = 0;
+	char * cur = buf + len - 1;
 	while (key)
 	{
-		*(cur++) = (key & 0x7F) + 1;
+		*(cur--) = (key & 0x7F) + 1;
 		key >>= 7;
 	}
-	*cur = 0;
+	return buf;
+}
+
+char * tern_sortable_int_key(uint32_t key, char * buf)
+{
+	buf[MAX_INT_KEY_SIZE - 1] = 0;
+	char * cur = buf + MAX_INT_KEY_SIZE - 2;
+	while (cur >= buf)
+	{
+		*(cur--) = (key & 0x7F) + 1;
+		key >>= 7;
+	}
 	return buf;
 }