Author: brane
Date: Sat May 23 13:12:25 2026
New Revision: 1934534
Log:
Follow up to r1934533: svn_utf__cstring_utf8_grapheme_breaks is no longer
the back-end for svn_utf_cstring_utf8_width, so always require the pool
and result pointer arguments.
* subversion/include/private/svn_utf_private.h
(svn_utf__cstring_utf8_grapheme_breaks): Update the docstring.
* subversion/libsvn_subr/utf8proc.c
(svn_utf__cstring_utf8_grapheme_breaks): Remove the conditional bits that
were intended to avoid grapheme allocation.
* subversion/tests/libsvn_subr/utf-test.c
(test_utf8_grapheme_breaks): Add the required arguments to the invalid
UTF8 string test.
Modified:
subversion/trunk/subversion/include/private/svn_utf_private.h
subversion/trunk/subversion/libsvn_subr/utf8proc.c
subversion/trunk/subversion/tests/libsvn_subr/utf-test.c
Modified: subversion/trunk/subversion/include/private/svn_utf_private.h
==============================================================================
--- subversion/trunk/subversion/include/private/svn_utf_private.h Sat May 23 13:02:20 2026 (r1934533)
+++ subversion/trunk/subversion/include/private/svn_utf_private.h Sat May 23 13:12:25 2026 (r1934534)
@@ -311,10 +311,7 @@ typedef struct svn_utf__utf8_grapheme_t
* grapheme in the returned array may not be complete; we don't check if
* a grapheme break is allowed at the end bcause it's, well, the end.
*
- * *GRAPHEMES will be NULL if CSTR is empty.
- *
- * If GRAPHEMES is NULL, the list of graphemes will not be allocated
- * and POOL may also be NULL.
+ * *GRAPHEMES will be set to NULL on return if CSTR is empty.
*
* If CSTR is not a valid UTF-8 string, the returned value will be -1.
*/
Modified: subversion/trunk/subversion/libsvn_subr/utf8proc.c
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/utf8proc.c Sat May 23 13:02:20 2026 (r1934533)
+++ subversion/trunk/subversion/libsvn_subr/utf8proc.c Sat May 23 13:12:25 2026 (r1934534)
@@ -614,7 +614,7 @@ svn_utf__cstring_utf8_grapheme_breaks(ap
const char *cstr,
apr_pool_t *pool)
{
- apr_array_header_t *breaks = NULL;
+ apr_array_header_t *breaks;
apr_ssize_t total_width = 0;
utf8proc_int32_t state = 0;
@@ -629,8 +629,7 @@ svn_utf__cstring_utf8_grapheme_breaks(ap
const utf8proc_uint8_t *utf8 = (const utf8proc_uint8_t *)cstr;
if (!*utf8)
{
- if (graphemes)
- *graphemes = NULL;
+ *graphemes = NULL;
return 0;
}
@@ -638,8 +637,7 @@ svn_utf__cstring_utf8_grapheme_breaks(ap
if (nbytes < 0)
return -1;
- if (graphemes)
- breaks = apr_array_make(pool, 16, sizeof(svn_utf__utf8_grapheme_t));
+ breaks = apr_array_make(pool, 16, sizeof(svn_utf__utf8_grapheme_t));
grapheme_width += utf8proc_charwidth(codepoint1);
grapheme_end += nbytes;
utf8 += nbytes;
@@ -652,14 +650,11 @@ svn_utf__cstring_utf8_grapheme_breaks(ap
if (utf8proc_grapheme_break_stateful(codepoint1, codepoint2, &state))
{
- if (breaks)
- {
- svn_utf__utf8_grapheme_t grapheme;
- grapheme.start = grapheme_start;
- grapheme.end = grapheme_end;
- grapheme.width = grapheme_width;
- APR_ARRAY_PUSH(breaks, svn_utf__utf8_grapheme_t) = grapheme;
- }
+ svn_utf__utf8_grapheme_t grapheme;
+ grapheme.start = grapheme_start;
+ grapheme.end = grapheme_end;
+ grapheme.width = grapheme_width;
+ APR_ARRAY_PUSH(breaks, svn_utf__utf8_grapheme_t) = grapheme;
total_width += grapheme_width;
grapheme_width = 0;
@@ -675,20 +670,16 @@ svn_utf__cstring_utf8_grapheme_breaks(ap
/* Record the final grapheme. */
if (grapheme_end > grapheme_start)
{
- if (breaks)
- {
- svn_utf__utf8_grapheme_t grapheme;
- grapheme.start = grapheme_start;
- grapheme.end = grapheme_end;
- grapheme.width = grapheme_width;
- APR_ARRAY_PUSH(breaks, svn_utf__utf8_grapheme_t) = grapheme;
- }
+ svn_utf__utf8_grapheme_t grapheme;
+ grapheme.start = grapheme_start;
+ grapheme.end = grapheme_end;
+ grapheme.width = grapheme_width;
+ APR_ARRAY_PUSH(breaks, svn_utf__utf8_grapheme_t) = grapheme;
total_width += grapheme_width;
}
- if (breaks && graphemes)
- *graphemes = breaks;
+ *graphemes = breaks;
return total_width;
}
Modified: subversion/trunk/subversion/tests/libsvn_subr/utf-test.c
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_subr/utf-test.c Sat May 23 13:02:20 2026 (r1934533)
+++ subversion/trunk/subversion/tests/libsvn_subr/utf-test.c Sat May 23 13:12:25 2026 (r1934534)
@@ -1042,7 +1042,7 @@ test_utf8_grapheme_breaks(apr_pool_t *po
SVN_TEST_ASSERT(graphemes == NULL);
SVN_TEST_INT_ASSERT(
- svn_utf__cstring_utf8_grapheme_breaks(NULL, invalid, NULL), -1);
+ svn_utf__cstring_utf8_grapheme_breaks(&graphemes, invalid, pool), -1);
#define STRING_LENGTH_FROM_GRAPHEMES \
APR_ARRAY_IDX(graphemes, graphemes->nelts - 1, svn_utf__utf8_grapheme_t).end
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.