ObjFW  Diff

Differences From Artifact [efb7bb469a]:

To Artifact [6e0427f4c2]:


42
43
44
45
46
47
48
49
50
51
52
53
54








55
56
57
58
59
60
61
62
63
42
43
44
45
46
47
48






49
50
51
52
53
54
55
56
57

58
59
60
61
62
63
64







-
-
-
-
-
-
+
+
+
+
+
+
+
+

-







    size_t length, bool lossy)
{
	size_t i;

	for (i = 0; i < length; i++) {
		of_unichar_t c = input[i];

		if OF_UNLIKELY ((c >= 0x80 && c <= 0x9F) || c > 0xFFFF) {
			if (lossy)
				output[i] = '?';
			else
				return false;
		}
		if OF_UNLIKELY (c > 0xFF) {
			if OF_UNLIKELY (c > 0xFFFF) {
				if (lossy) {
					output[i] = '?';
					continue;
				} else
					return false;
			}

		if OF_UNLIKELY (c > 0xFF) {
			switch ((of_char16_t)c) {
			case 0x20AC:
				output[i] = 0x80;
				break;
			case 0x201A:
				output[i] = 0x82;
				break;
140
141
142
143
144
145
146






147
148



149
150
151
152
141
142
143
144
145
146
147
148
149
150
151
152
153


154
155
156
157
158
159
160







+
+
+
+
+
+
-
-
+
+
+




				if (lossy)
					output[i] = '?';
				else
					return false;

				break;
			}
		} else {
			if OF_UNLIKELY (c >= 0x80 && c <= 0x9F) {
				if (lossy)
					output[i] = '?';
				else
					return false;
		} else
			output[i] = (uint8_t)c;
			} else
				output[i] = (uint8_t)c;
		}
	}

	return true;
}