Try unicode decomposition when convertion fails
送信時に変換できなかった場合、
Blueprint information
- Status:
- Not started
- Approver:
- None
- Priority:
- Undefined
- Drafter:
- None
- Direction:
- Needs approval
- Assignee:
- None
- Definition:
- New
- Series goal:
- None
- Implementation:
- Unknown
- Milestone target:
- None
- Started by
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
Index: libloqui/
=======
--- libloqui/
+++ libloqui/
@@ -354,7 +354,13 @@
loqui_
{
LoquiCodeConv
- gchar *output;
+ GString *string;
+ const gchar *cur;
+ gsize bytes_read;
+ GError *tmp_err;
+ gunichar uc;
+ gchar *tmp;
+ gchar utf8_buf[10];
@@ -366,14 +372,44 @@
if (!priv->func && !LOQUI_
return g_strdup(input);
- if (priv->func) {
- output = priv->func(
- } else {
- output = g_convert_
- NULL, NULL, error);
+ if (priv->func)
+ return priv->func(
+
+ string = g_string_new(NULL);
+ cur = input;
+ while ((tmp = g_convert_
+ if (!tmp_err ||
+ tmp_err->domain != G_CONVERT_ERROR ||
+ tmp_err->code != G_CONVERT_
+ g_propagate_
+ return NULL;
+ }
+
+ if ((tmp = g_convert_
+ g_propagate_
+ return NULL;
+ }
+ g_string_
+ g_free(tmp);
+
+ cur += bytes_read;
+ uc = g_utf8_
+ g_unichar_
+ tmp = g_utf8_
+
+ if ((tmp = g_convert_
+ g_propagate_
+ return NULL;
+ }
+ g_string_
+ g_free(tmp);
+
+ cur = g_utf8_
}
+ g_string_
+ g_free(tmp);
- return output;
+ return g_string_
}
static gchar *