int codepts;
UChar32 ch;
- for (i = 0, codepts = 0 ; i < len1 ; codepts++) {
+ for (i = 0, codepts = 0 ; i < len1 ; ) {
U16_NEXT(s1, i, len1, ch);
- if (u_memchr32(s2, ch, len2)) {
+ if (!len2 || u_memchr32(s2, ch, len2)) {
break;
}
+ codepts++;
}
return codepts;
}
if (*spanp == c || p == s1_end) {
return p - s1;
}
- } while (spanp++ < s2_end);
+ } while (spanp++ < (s2_end - 1));
c = *++p;
}
/* NOTREACHED */
--- /dev/null
+--TEST--
+Bug #39032 (strcspn() stops on null character)
+--FILE--
+<?php
+
+var_dump(strcspn(chr(0),"x"));
+var_dump(strcspn(chr(0),""));
+var_dump(strcspn(chr(0),"qweqwe"));
+var_dump(strcspn(chr(1),"qweqwe"));
+
+echo "Done\n";
+?>
+--EXPECTF--
+int(1)
+int(0)
+int(1)
+int(1)
+Done