summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--stdlib/socket.tl6
1 files changed, 4 insertions, 2 deletions
diff --git a/stdlib/socket.tl b/stdlib/socket.tl
index af4aca4e..95a5650d 100644
--- a/stdlib/socket.tl
+++ b/stdlib/socket.tl
@@ -67,12 +67,14 @@
(defun sys:in6addr-condensed-text (numeric-pieces)
- (let* ((str (cat-str [mapcar (op fmt "~x") numeric-pieces] ":"))
- (zr (rra #/0(:0)+/ str))
+ (let* ((str (cat-str [mapcar [iff zerop (ret "Z") (op fmt "~x")]
+ numeric-pieces] ":"))
+ (zr (rra #/Z(:Z)+/ str))
(lp [pos-max zr : [callf - to from]])
(lr [zr lp]))
(when lp
(del [str lr]))
+ (upd str (regsub "Z" "0"))
(cond
((equal "" str) "::")
((starts-with ":" str) `:@str`)