summaryrefslogtreecommitdiff
path: root/libguile/srfi-14.c
diff options
context:
space:
mode:
authorMichael Gran <spk121@yahoo.com>2009-09-02 06:20:45 -0700
committerMichael Gran <spk121@yahoo.com>2009-09-02 06:28:47 -0700
commitaff31b0f9946999d9adbf582fabbbd3e523e29e8 (patch)
tree0f3c8052a1f6da052e6f53f7bc34537dcb71a545 /libguile/srfi-14.c
parentf4cdfe6140923b5cf11d7af9a2098514d98a61a5 (diff)
downloadguile-aff31b0f9946999d9adbf582fabbbd3e523e29e8.tar.gz
Optimize charset union operator
* libguile/srfi-14.c (charsets_union): call scm_i_charset_set_range instead of setting characters one-by-one.
Diffstat (limited to 'libguile/srfi-14.c')
-rw-r--r--libguile/srfi-14.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/libguile/srfi-14.c b/libguile/srfi-14.c
index 4f0010a62..e99a7227c 100644
--- a/libguile/srfi-14.c
+++ b/libguile/srfi-14.c
@@ -399,7 +399,7 @@ static void
charsets_union (scm_t_char_set *a, scm_t_char_set *b)
{
size_t i = 0;
- scm_t_wchar blo, bhi, n;
+ scm_t_wchar blo, bhi;
if (b->len == 0)
return;
@@ -413,13 +413,11 @@ charsets_union (scm_t_char_set *a, scm_t_char_set *b)
return;
}
- /* This needs optimization. */
while (i < b->len)
{
blo = b->ranges[i].lo;
bhi = b->ranges[i].hi;
- for (n = blo; n <= bhi; n++)
- scm_i_charset_set (a, n);
+ scm_i_charset_set_range (a, blo, bhi);
i++;
}