From bcfecca1a138d2b53238e213365d16b9e008881b Mon Sep 17 00:00:00 2001 From: "Jason S. Ninneman" Date: Sun, 11 Jun 2017 14:59:08 -0700 Subject: [PATCH] Fix broken unpacking algorithm. Also trim trailing whitespace. --- misc.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/misc.c b/misc.c index 801331b..9da70dc 100644 --- a/misc.c +++ b/misc.c @@ -23,12 +23,24 @@ void* xmalloc(size_t size) void packed_to_token(long packed, char token[6]) { + // Unpack and map back to ASCII. for (int i = 0; i < 5; ++i) { char advent = (packed >> i * 6) & 63; - token[i] = advent_to_ascii[advent]; + token[4 - i] = advent_to_ascii[advent]; } + + // Ensure the last character is \0. token[5] = '\0'; + + // Replace trailing whitespace with \0. + for (int i = 4; i >= 0; --i) + { + if (token[i] == ' ' || token[i] == '\t') + token[i] = '\0'; + else + break; + } } /* I/O routines (SPEAK, PSPEAK, RSPEAK, SETPRM, GETIN, YES) */ -- 2.31.1