aboutsummaryrefslogtreecommitdiffstats
path: root/src/nsfns.m
diff options
context:
space:
mode:
authorJan Djärv <[email protected]>2013-10-09 20:50:14 +0200
committerJan Djärv <[email protected]>2013-10-09 20:50:14 +0200
commit0486beac541c98698a73688991365298006f7cd3 (patch)
treea338e3939c690d258b1aba72f056138f5189b7c5 /src/nsfns.m
parent14afa541a6e28b69d2cb6f22bf0f2d22ab2d8b2d (diff)
* nsfns.m (Fns_convert_utf8_nfd_to_nfc): Check input for valid UTF-8
or throw error. Fixes: debbugs:15570
Diffstat (limited to 'src/nsfns.m')
-rw-r--r--src/nsfns.m21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/nsfns.m b/src/nsfns.m
index 93b7d12bec..24edd4366c 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,
/* TODO: If GNUstep ever implements precomposedStringWithCanonicalMapping,
remove this. */
NSString *utfStr;
- Lisp_Object ret;
+ Lisp_Object ret = Qnil;
+ NSAutoreleasePool *pool;
CHECK_STRING (str);
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- utfStr = [NSString stringWithUTF8String: SSDATA (str)];
+ pool = [[NSAutoreleasePool alloc] init];
+ utfStr = [NSString stringWithUTF8String: SSDATA (str)];
#ifdef NS_IMPL_COCOA
- utfStr = [utfStr precomposedStringWithCanonicalMapping];
+ if (utfStr)
+ utfStr = [utfStr precomposedStringWithCanonicalMapping];
#endif
- ret = build_string ([utfStr UTF8String]);
+ if (utfStr)
+ {
+ const char *cstr = [utfStr UTF8String];
+ if (cstr)
+ ret = build_string (cstr);
+ }
+
[pool release];
+ if (NILP (ret))
+ error ("Invalid UTF-8");
+
return ret;
}