emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r114596: * nsfns.m (Fns_convert_utf8_nfd_to_nfc): Ch


From: Jan D.
Subject: [Emacs-diffs] trunk r114596: * nsfns.m (Fns_convert_utf8_nfd_to_nfc): Check input for valid UTF-8
Date: Wed, 09 Oct 2013 18:50:18 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 114596
revision-id: address@hidden
parent: address@hidden
fixes bug: http://debbugs.gnu.org/15570
committer: Jan D. <address@hidden>
branch nick: trunk
timestamp: Wed 2013-10-09 20:50:14 +0200
message:
  * nsfns.m (Fns_convert_utf8_nfd_to_nfc): Check input for valid UTF-8
  or throw error.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/nsfns.m                    nsfns.m-20091113204419-o5vbwnq5f7feedwu-8741
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2013-10-09 17:56:58 +0000
+++ b/src/ChangeLog     2013-10-09 18:50:14 +0000
@@ -1,3 +1,8 @@
+2013-10-09  Jan Djärv  <address@hidden>
+
+       * nsfns.m (Fns_convert_utf8_nfd_to_nfc): Check input for valid UTF-8
+       or throw error (Bug#15570).
+
 2013-10-09  Paul Eggert  <address@hidden>
 
        * intervals.c (temp_set_point_both): Move test into 'eassert',

=== modified file 'src/nsfns.m'
--- a/src/nsfns.m       2013-09-18 09:23:10 +0000
+++ b/src/nsfns.m       2013-10-09 18:50:14 +0000
@@ -2048,16 +2048,27 @@
 /* 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;
 }
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]