X-Git-Url: https://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Flinebreak.c;h=73dba732d4a7991a1ae277182a5ecfe2f5dc87b6;hb=6684d992bfedd21bf8dea1fbb52392c1d7c8159b;hp=82aba3c84240ea6e017b6d8be877d55199fd52dc;hpb=99099106c3c1cb16ed1e91be970332fe225e278b;p=gnulib.git diff --git a/lib/linebreak.c b/lib/linebreak.c index 82aba3c84..73dba732d 100644 --- a/lib/linebreak.c +++ b/lib/linebreak.c @@ -1,5 +1,5 @@ /* linebreak.c - line breaking of Unicode strings - Copyright (C) 2001-2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2001-2003, 2006-2007 Free Software Foundation, Inc. Written by Bruno Haible , 2001. This program is free software; you can redistribute it and/or modify @@ -25,14 +25,11 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include "c-ctype.h" #include "xsize.h" - -#include "utf8-ucs4.h" - -#include "utf16-ucs4.h" +#include "unistr.h" #ifdef unused static inline int -u32_mbtouc (unsigned int *puc, const unsigned int *s, size_t n) +u32_mbtouc_unsafe (unsigned int *puc, const unsigned int *s, size_t n) { *puc = *s; return 1; @@ -472,7 +469,7 @@ u8_width (const unsigned char *s, size_t n, const char *encoding) unsigned int uc; int w; - s += u8_mbtouc (&uc, s, s_end - s); + s += u8_mbtouc_unsafe (&uc, s, s_end - s); if (uc == 0) break; /* end of string reached */ @@ -496,7 +493,7 @@ u16_width (const unsigned short *s, size_t n, const char *encoding) unsigned int uc; int w; - s += u16_mbtouc (&uc, s, s_end - s); + s += u16_mbtouc_unsafe (&uc, s, s_end - s); if (uc == 0) break; /* end of string reached */ @@ -642,7 +639,7 @@ u8_possible_linebreaks (const unsigned char *s, size_t n, const char *encoding, while (s < s_end) { unsigned int uc; - int count = u8_mbtouc (&uc, s, s_end - s); + int count = u8_mbtouc_unsafe (&uc, s, s_end - s); int prop = lbrkprop_lookup (uc); if (prop == LBP_BK) @@ -754,7 +751,7 @@ u16_possible_linebreaks (const unsigned short *s, size_t n, const char *encoding while (s < s_end) { unsigned int uc; - int count = u16_mbtouc (&uc, s, s_end - s); + int count = u16_mbtouc_unsafe (&uc, s, s_end - s); int prop = lbrkprop_lookup (uc); if (prop == LBP_BK) @@ -983,7 +980,7 @@ u8_width_linebreaks (const unsigned char *s, size_t n, while (s < s_end) { unsigned int uc; - int count = u8_mbtouc (&uc, s, s_end - s); + int count = u8_mbtouc_unsafe (&uc, s, s_end - s); /* Respect the override. */ if (o != NULL && *o != UC_BREAK_UNDEFINED) @@ -1067,7 +1064,7 @@ u16_width_linebreaks (const unsigned short *s, size_t n, while (s < s_end) { unsigned int uc; - int count = u16_mbtouc (&uc, s, s_end - s); + int count = u16_mbtouc_unsafe (&uc, s, s_end - s); /* Respect the override. */ if (o != NULL && *o != UC_BREAK_UNDEFINED) @@ -1617,6 +1614,7 @@ mbs_width_linebreaks (const char *s, size_t n, xsum4 (xtimes (n, sizeof (size_t)), m, m, (o != NULL ? m : 0)); char *memory = + (char *) (size_in_bounds_p (memory_size) ? malloc (memory_size) : NULL); if (memory != NULL) {