diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index cba2385a6f0b3a6ee6870237187c0fb97269342b..4819c3d6cca44ea637782bcb823eedd7f8904634 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -797,8 +797,9 @@ static char *ip6_compressed_string(char *p, const char *addr)
 				p = pack_hex_byte(p, hi);
 			else
 				*p++ = hex_asc_lo(hi);
+			p = pack_hex_byte(p, lo);
 		}
-		if (hi || lo > 0x0f)
+		else if (lo > 0x0f)
 			p = pack_hex_byte(p, lo);
 		else
 			*p++ = hex_asc_lo(lo);