emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] externals/sly 1188cfc 34/47: Ignore utf-8 encoding errors


From: ELPA Syncer
Subject: [nongnu] externals/sly 1188cfc 34/47: Ignore utf-8 encoding errors
Date: Thu, 17 Dec 2020 18:57:20 -0500 (EST)

branch: externals/sly
commit 1188cfc9923155c70ab03b7f5546ad5a14bb23c3
Author: Stas Boukarev <stassats@gmail.com>
Commit: João Távora <joaotavora@gmail.com>

    Ignore utf-8 encoding errors
    
    * slynk/backend/sbcl.lisp (string-to-utf8, utf8-to-string): Rework.
    
    * slynk/slynk-backend.lisp (utf8-decode-aux, utf8-decode): Rework.
    
    Cherry-picked-from: SLIME commit f851763d96fe8aa7f563ad4e00ba06d275316210
    Co-authored-by: João Távora <joaotavora@gmail.com>
---
 slynk/backend/sbcl.lisp  |  8 ++++++--
 slynk/slynk-backend.lisp | 12 +++++-------
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/slynk/backend/sbcl.lisp b/slynk/backend/sbcl.lisp
index 487ef93..aeb2ea7 100644
--- a/slynk/backend/sbcl.lisp
+++ b/slynk/backend/sbcl.lisp
@@ -85,10 +85,14 @@
 ;;; UTF8
 
 (defimplementation string-to-utf8 (string)
-  (sb-ext:string-to-octets string :external-format :utf8))
+  (sb-ext:string-to-octets string :external-format '(:utf8 :replacement
+                                                     #+sb-unicode 
#\Replacement_Character
+                                                     #-sb-unicode #\? )))
 
 (defimplementation utf8-to-string (octets)
-  (sb-ext:octets-to-string octets :external-format :utf8))
+  (sb-ext:octets-to-string octets :external-format '(:utf8 :replacement
+                                                     #+sb-unicode 
#\Replacement_Character
+                                                     #-sb-unicode #\? )))
 
 ;;; TCP Server
 
diff --git a/slynk/slynk-backend.lisp b/slynk/slynk-backend.lisp
index 8c5f892..0bb27e1 100644
--- a/slynk/slynk-backend.lisp
+++ b/slynk/slynk-backend.lisp
@@ -291,18 +291,15 @@ form suitable for testing with #+."
                          (cond ((= (ldb (byte 2 6) byte) #b10)
                                 (+ (ash code 6) (ldb (byte 6 0) byte)))
                                (t
-                                (error "Invalid encoding"))))))
+                                #xFFFD))))) ;; Replacement_Character
           ((= i n)
            (values (cond ((<= code #xff) (code-char code))
                          ((<= #xd800 code #xdfff)
-                          (error "Invalid Unicode code point: #x~x" code))
+                          (code-char #xFFFD)) ;; Replacement_Character
                          ((and (< code char-code-limit)
                                (code-char code)))
                          (t
-                          (error
-                           "Can't represent code point: #x~x ~
-                            (char-code-limit is #x~x)"
-                           code char-code-limit)))
+                          (code-char #xFFFD))) ;; Replacement_Character
                    (+ index n))))))
 
 ;; Decode one character in BUFFER starting at INDEX.
@@ -392,7 +389,8 @@ form suitable for testing with #+."
                (t start)))
         ((<= code #x7ff) (utf8-encode-aux code buffer start end 2))
         ((<= #xd800 code #xdfff)
-         (error "Invalid Unicode code point (surrogate): #x~x" code))
+         (%utf8-encode (code-char #xFFFD) ;; Replacement_Character
+                       buffer start end))
         ((<= code #xffff) (utf8-encode-aux code buffer start end 3))
         ((<= code #x1fffff) (utf8-encode-aux code buffer start end 4))
         ((<= code #x3ffffff) (utf8-encode-aux code buffer start end 5))



reply via email to

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