Perl_utf8_distance can be implemented as a call to Perl_utf8_length.
Nicholas Clark [Mon, 20 Mar 2006 12:37:22 +0000 (12:37 +0000)]
p4raw-id: //depot/perl@27553

utf8.c

diff --git a/utf8.c b/utf8.c
index af63ac3..2de924f 100644 (file)
--- a/utf8.c
+++ b/utf8.c
@@ -703,39 +703,7 @@ same UTF-8 buffer.
 IV
 Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b)
 {
-    dVAR;
-    IV off = 0;
-    IV sign = 1;
-
-    /* Note: cannot use UTF8_IS_...() too eagerly here since  e.g.
-     * the bitops (especially ~) can create illegal UTF-8.
-     * In other words: in Perl UTF-8 is not just for Unicode. */
-
-    if (a < b) {
-       const U8 *const temp = a;
-       a = b;
-       b = temp;
-       sign = -1;
-    }
-
-    while (b < a) {
-       const U8 c = UTF8SKIP(b);
-
-       if (a - b < c) {
-           if (ckWARN_d(WARN_UTF8)) {
-               if (PL_op)
-                   Perl_warner(aTHX_ packWARN(WARN_UTF8),
-                               "%s in %s", unees, OP_DESC(PL_op));
-               else
-                   Perl_warner(aTHX_ packWARN(WARN_UTF8), unees);
-           }
-           return off * sign;
-       }
-       b += c;
-       off++;
-    }
-
-    return off * sign;
+    return (a < b) ? -1 * (IV) utf8_length(a, b) : (IV) utf8_length(b, a);
 }
 
 /*