diff uptools/libcoding/decode_helpers.c @ 802:1c599681fd60

pcm-sms-decode & sms-pdu-decode: revamp bad char decoding
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 25 Mar 2021 02:58:30 +0000
parents 978571e23318
children
line wrap: on
line diff
--- a/uptools/libcoding/decode_helpers.c	Thu Mar 25 01:40:36 2021 +0000
+++ b/uptools/libcoding/decode_helpers.c	Thu Mar 25 02:58:30 2021 +0000
@@ -48,8 +48,15 @@
 		outp[1] = 0x80 | (uni & 0x3F);
 		return(2);
 	}
-	outp[0] = 0xE0 | (uni >> 12);
-	outp[1] = 0x80 | ((uni >> 6) & 0x3F);
-	outp[2] = 0x80 | (uni & 0x3F);
-	return(3);
+	if (uni < 0x10000) {
+		outp[0] = 0xE0 | (uni >> 12);
+		outp[1] = 0x80 | ((uni >> 6) & 0x3F);
+		outp[2] = 0x80 | (uni & 0x3F);
+		return(3);
+	}
+	outp[0] = 0xF0 | (uni >> 18);
+	outp[1] = 0x80 | ((uni >> 12) & 0x3F);
+	outp[2] = 0x80 | ((uni >> 6) & 0x3F);
+	outp[3] = 0x80 | (uni & 0x3F);
+	return(4);
 }