From a01be8bd6b5d3150e897d4c57e90b6d2e8d81f8d Mon Sep 17 00:00:00 2001 From: Kalle Olavi Niemitalo Date: Sun, 3 Sep 2006 03:08:56 +0300 Subject: [PATCH] UTF-8: Stepping functions set *count even if an assertion fails. Previously, utf8_step_forward() and utf8_step_backward() left *count unchanged if some parameter was invalid. Now, they properly store 0. This flaw had no effect in practice, because all current callers pass count=NULL, and invalid parameters shouldn't be used anyway. --- src/intl/charsets.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/intl/charsets.c b/src/intl/charsets.c index edd9e484..d8ecaa2d 100644 --- a/src/intl/charsets.c +++ b/src/intl/charsets.c @@ -395,7 +395,7 @@ utf8_step_forward(unsigned char *string, unsigned char *end, assert(string); assert(max >= 0); - if_assert_failed return string; + if_assert_failed goto invalid_arg; if (end == NULL) end = strchr(string, '\0'); @@ -439,6 +439,7 @@ utf8_step_forward(unsigned char *string, unsigned char *end, INTERNAL("impossible enum utf8_step"); } +invalid_arg: if (count) *count = steps; return current; @@ -463,7 +464,7 @@ utf8_step_backward(unsigned char *string, unsigned char *start, assert(string); assert(start); assert(max >= 0); - if_assert_failed return string; + if_assert_failed goto invalid_arg; switch (way) { case utf8_step_characters: @@ -511,6 +512,7 @@ utf8_step_backward(unsigned char *string, unsigned char *start, INTERNAL("impossible enum utf8_step"); } +invalid_arg: if (count) *count = steps; return current; -- 2.11.4.GIT