aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJan Djärv2013-10-09 20:50:14 +0200
committerJan Djärv2013-10-09 20:50:14 +0200
commit0486beac541c98698a73688991365298006f7cd3 (patch)
treea338e3939c690d258b1aba72f056138f5189b7c5 /src
parent14afa541a6e28b69d2cb6f22bf0f2d22ab2d8b2d (diff)
downloademacs-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/ChangeLog5
-rw-r--r--src/nsfns.m21
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 @@
12013-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
12013-10-09 Paul Eggert <eggert@cs.ucla.edu> 62013-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