diff options
author | Denis Kenzior <denkenz@gmail.com> | 2018-12-21 14:49:02 -0600 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2018-12-27 18:18:51 -0600 |
commit | 9c7a87673a54af287ab63ffd374bf6430aa2444c (patch) | |
tree | 386aab2d9847f762be96090e01e76951e545b6f5 /src/smsutil.c | |
parent | 351088e185ec0b931f68e50e139be19f836f2502 (diff) | |
download | ofono-9c7a87673a54af287ab63ffd374bf6430aa2444c.tar.gz |
util: Use l_utf8_to_ucs2be instead of g_convert
Diffstat (limited to 'src/smsutil.c')
-rw-r--r-- | src/smsutil.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/smsutil.c b/src/smsutil.c index 8e51274d..7ac8f872 100644 --- a/src/smsutil.c +++ b/src/smsutil.c @@ -3562,7 +3562,7 @@ GSList *sms_text_prepare_with_alphabet(const char *to, const char *utf8, struct sms template; int offset = 0; unsigned char *gsm_encoded = NULL; - char *ucs2_encoded = NULL; + void *ucs2_encoded = NULL; long written; long left; guint8 seq; @@ -3587,16 +3587,15 @@ GSList *sms_text_prepare_with_alphabet(const char *to, const char *utf8, gsm_encoded = convert_utf8_to_gsm_best_lang(utf8, -1, NULL, &written, 0, alphabet, &used_locking, &used_single); - if (gsm_encoded == NULL) { - gsize converted; + if (!gsm_encoded) { + size_t converted; - ucs2_encoded = g_convert(utf8, -1, "UCS-2BE//TRANSLIT", "UTF-8", - NULL, &converted, NULL); - written = converted; - } + ucs2_encoded = l_utf8_to_ucs2be(utf8, &converted); + if (!ucs2_encoded) + return NULL; - if (gsm_encoded == NULL && ucs2_encoded == NULL) - return NULL; + written = converted - 2; + } if (gsm_encoded != NULL) template.submit.dcs = 0x00; /* Class Unspecified, 7 Bit */ @@ -3641,7 +3640,7 @@ GSList *sms_text_prepare_with_alphabet(const char *to, const char *utf8, template.submit.udl = written + offset; memcpy(template.submit.ud + offset, ucs2_encoded, written); - g_free(ucs2_encoded); + l_free(ucs2_encoded); return sms_list_append(NULL, &template); } @@ -3716,7 +3715,7 @@ GSList *sms_text_prepare_with_alphabet(const char *to, const char *utf8, g_free(gsm_encoded); if (ucs2_encoded) - g_free(ucs2_encoded); + l_free(ucs2_encoded); if (left > 0) { g_slist_free_full(r, g_free); |