Johannes Weißl
2011-04-14 15:58:04 UTC
u_collate.c:110:11: warning: 'xfrm_len' may be used uninitialized in this function [-Wuninitialized]
Also simplify a bit.
---
u_collate.c | 17 ++++++-----------
1 files changed, 6 insertions(+), 11 deletions(-)
diff --git a/u_collate.c b/u_collate.c
index b895ff1..a6ebdd7 100644
--- a/u_collate.c
+++ b/u_collate.c
@@ -92,22 +92,17 @@ char *u_strcoll_key(const char *str)
}
if (!result) {
- char *str_locale;
- size_t xfrm_len;
+ char *str_locale = NULL;
convert(str, -1, &str_locale, -1, charset, "UTF-8");
if (str_locale) {
- xfrm_len = strxfrm(NULL, str_locale, 0);
- if ((ssize_t) xfrm_len < 0 || xfrm_len >= INT_MAX - 2) {
- free(str_locale);
- str_locale = NULL;
+ size_t xfrm_len = strxfrm(NULL, str_locale, 0);
+ if ((ssize_t) xfrm_len >= 0 && xfrm_len < INT_MAX - 2) {
+ result = xnew(char, xfrm_len + 2);
+ result[0] = 'A';
+ strxfrm(result + 1, str_locale, xfrm_len + 1);
}
- }
- if (str_locale) {
- result = xnew(char, xfrm_len + 2);
- result[0] = 'A';
- strxfrm(result + 1, str_locale, xfrm_len + 1);
free(str_locale);
}
}
Also simplify a bit.
---
u_collate.c | 17 ++++++-----------
1 files changed, 6 insertions(+), 11 deletions(-)
diff --git a/u_collate.c b/u_collate.c
index b895ff1..a6ebdd7 100644
--- a/u_collate.c
+++ b/u_collate.c
@@ -92,22 +92,17 @@ char *u_strcoll_key(const char *str)
}
if (!result) {
- char *str_locale;
- size_t xfrm_len;
+ char *str_locale = NULL;
convert(str, -1, &str_locale, -1, charset, "UTF-8");
if (str_locale) {
- xfrm_len = strxfrm(NULL, str_locale, 0);
- if ((ssize_t) xfrm_len < 0 || xfrm_len >= INT_MAX - 2) {
- free(str_locale);
- str_locale = NULL;
+ size_t xfrm_len = strxfrm(NULL, str_locale, 0);
+ if ((ssize_t) xfrm_len >= 0 && xfrm_len < INT_MAX - 2) {
+ result = xnew(char, xfrm_len + 2);
+ result[0] = 'A';
+ strxfrm(result + 1, str_locale, xfrm_len + 1);
}
- }
- if (str_locale) {
- result = xnew(char, xfrm_len + 2);
- result[0] = 'A';
- strxfrm(result + 1, str_locale, xfrm_len + 1);
free(str_locale);
}
}
--
1.7.4.1
1.7.4.1