From 581cf406a6d9f23f93fb34a90f1608c4df898ea4 Mon Sep 17 00:00:00 2001 From: Al Date: Wed, 24 Jun 2015 13:39:09 -0500 Subject: [PATCH] [utf8] Adding length argument to string_script function --- src/unicode_scripts.c | 10 ++++++---- src/unicode_scripts.h | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/unicode_scripts.c b/src/unicode_scripts.c index d7709b3f..0858b101 100644 --- a/src/unicode_scripts.c +++ b/src/unicode_scripts.c @@ -11,16 +11,17 @@ inline script_languages_t get_script_languages(script_t script) { return script_languages[script]; } -script_t string_script(char *str, size_t *len) { +script_t string_script(char *str, size_t len, size_t *script_len) { int32_t ch; script_t last_script = SCRIPT_UNKNOWN; script_t script = SCRIPT_UNKNOWN; uint8_t *ptr = (uint8_t *)str; - *len = 0; + *script_len = 0; + size_t idx = 0; - while (1) { + while (idx < len) { ssize_t char_len = utf8proc_iterate(ptr, -1, &ch); if (ch == 0) break; @@ -36,7 +37,8 @@ script_t string_script(char *str, size_t *len) { } ptr += char_len; - *len += char_len; + idx += char_len; + *script_len += char_len; if (script != SCRIPT_UNKNOWN || script != SCRIPT_COMMON) { last_script = script; diff --git a/src/unicode_scripts.h b/src/unicode_scripts.h index 16ef2439..436047cf 100644 --- a/src/unicode_scripts.h +++ b/src/unicode_scripts.h @@ -18,6 +18,6 @@ typedef struct script_languages { script_t get_char_script(uint32_t ch); script_languages_t get_script_languages(script_t script); -script_t string_script(char *str, size_t *len); +script_t string_script(char *str, size_t len, size_t *script_len); #endif