diff options
Diffstat (limited to 'src/character.c')
| -rw-r--r-- | src/character.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/character.c b/src/character.c index b9595f97ec7..34e69da9cc5 100644 --- a/src/character.c +++ b/src/character.c | |||
| @@ -672,13 +672,18 @@ str_as_multibyte (unsigned char *str, EMACS_INT len, EMACS_INT nbytes, | |||
| 672 | `str_to_multibyte'. */ | 672 | `str_to_multibyte'. */ |
| 673 | 673 | ||
| 674 | EMACS_INT | 674 | EMACS_INT |
| 675 | parse_str_to_multibyte (const unsigned char *str, EMACS_INT len) | 675 | count_size_as_multibyte (const unsigned char *str, EMACS_INT len) |
| 676 | { | 676 | { |
| 677 | const unsigned char *endp = str + len; | 677 | const unsigned char *endp = str + len; |
| 678 | EMACS_INT bytes; | 678 | EMACS_INT bytes; |
| 679 | 679 | ||
| 680 | for (bytes = 0; str < endp; str++) | 680 | for (bytes = 0; str < endp; str++) |
| 681 | bytes += (*str < 0x80) ? 1 : 2; | 681 | { |
| 682 | int n = *str < 0x80 ? 1 : 2; | ||
| 683 | if (INT_ADD_OVERFLOW (bytes, n)) | ||
| 684 | string_overflow (); | ||
| 685 | bytes += n; | ||
| 686 | } | ||
| 682 | return bytes; | 687 | return bytes; |
| 683 | } | 688 | } |
| 684 | 689 | ||