diff options
| author | Jan Djärv | 2013-10-09 20:50:14 +0200 |
|---|---|---|
| committer | Jan Djärv | 2013-10-09 20:50:14 +0200 |
| commit | 0486beac541c98698a73688991365298006f7cd3 (patch) | |
| tree | a338e3939c690d258b1aba72f056138f5189b7c5 /src | |
| parent | 14afa541a6e28b69d2cb6f22bf0f2d22ab2d8b2d (diff) | |
| download | emacs-0486beac541c98698a73688991365298006f7cd3.tar.gz emacs-0486beac541c98698a73688991365298006f7cd3.zip | |
* nsfns.m (Fns_convert_utf8_nfd_to_nfc): Check input for valid UTF-8
or throw error.
Fixes: debbugs:15570
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/nsfns.m | 21 |
2 files changed, 21 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index e4456b2ce2b..1a05203273f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2013-10-09 Jan Djärv <jan.h.d@swipnet.se> | ||
| 2 | |||
| 3 | * nsfns.m (Fns_convert_utf8_nfd_to_nfc): Check input for valid UTF-8 | ||
| 4 | or throw error (Bug#15570). | ||
| 5 | |||
| 1 | 2013-10-09 Paul Eggert <eggert@cs.ucla.edu> | 6 | 2013-10-09 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 7 | ||
| 3 | * intervals.c (temp_set_point_both): Move test into 'eassert', | 8 | * intervals.c (temp_set_point_both): Move test into 'eassert', |
diff --git a/src/nsfns.m b/src/nsfns.m index 93b7d12becb..24edd4366ce 100644 --- a/src/nsfns.m +++ b/src/nsfns.m | |||
| @@ -2048,16 +2048,27 @@ DEFUN ("ns-convert-utf8-nfd-to-nfc", Fns_convert_utf8_nfd_to_nfc, | |||
| 2048 | /* TODO: If GNUstep ever implements precomposedStringWithCanonicalMapping, | 2048 | /* TODO: If GNUstep ever implements precomposedStringWithCanonicalMapping, |
| 2049 | remove this. */ | 2049 | remove this. */ |
| 2050 | NSString *utfStr; | 2050 | NSString *utfStr; |
| 2051 | Lisp_Object ret; | 2051 | Lisp_Object ret = Qnil; |
| 2052 | NSAutoreleasePool *pool; | ||
| 2052 | 2053 | ||
| 2053 | CHECK_STRING (str); | 2054 | CHECK_STRING (str); |
| 2054 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; | 2055 | pool = [[NSAutoreleasePool alloc] init]; |
| 2055 | utfStr = [NSString stringWithUTF8String: SSDATA (str)]; | 2056 | utfStr = [NSString stringWithUTF8String: SSDATA (str)]; |
| 2056 | #ifdef NS_IMPL_COCOA | 2057 | #ifdef NS_IMPL_COCOA |
| 2057 | utfStr = [utfStr precomposedStringWithCanonicalMapping]; | 2058 | if (utfStr) |
| 2059 | utfStr = [utfStr precomposedStringWithCanonicalMapping]; | ||
| 2058 | #endif | 2060 | #endif |
| 2059 | ret = build_string ([utfStr UTF8String]); | 2061 | if (utfStr) |
| 2062 | { | ||
| 2063 | const char *cstr = [utfStr UTF8String]; | ||
| 2064 | if (cstr) | ||
| 2065 | ret = build_string (cstr); | ||
| 2066 | } | ||
| 2067 | |||
| 2060 | [pool release]; | 2068 | [pool release]; |
| 2069 | if (NILP (ret)) | ||
| 2070 | error ("Invalid UTF-8"); | ||
| 2071 | |||
| 2061 | return ret; | 2072 | return ret; |
| 2062 | } | 2073 | } |
| 2063 | 2074 | ||