提交 7185b273 编写于 作者: B Behdad Esfahbod

Rename in_error to !successful

Towards possibly using Null pool for some nil objects.
上级 353f4d2e
此差异已折叠。
...@@ -42,7 +42,7 @@ action clear_item { ...@@ -42,7 +42,7 @@ action clear_item {
action add_item { action add_item {
buffer->add_info (info); buffer->add_info (info);
if (buffer->in_error) if (unlikely (!buffer->successful))
return false; return false;
buffer->pos[buffer->len - 1] = pos; buffer->pos[buffer->len - 1] = pos;
*end_ptr = p; *end_ptr = p;
......
...@@ -34,274 +34,274 @@ ...@@ -34,274 +34,274 @@
#line 36 "hb-buffer-deserialize-text.hh" #line 36 "hb-buffer-deserialize-text.hh"
static const unsigned char _deserialize_text_trans_keys[] = { static const unsigned char _deserialize_text_trans_keys[] = {
0u, 0u, 9u, 122u, 45u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 48u, 57u, 45u, 57u, 0u, 0u, 9u, 122u, 45u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 48u, 57u, 45u, 57u,
48u, 57u, 44u, 44u, 45u, 57u, 48u, 57u, 44u, 57u, 9u, 124u, 9u, 124u, 0u, 0u, 48u, 57u, 44u, 44u, 45u, 57u, 48u, 57u, 44u, 57u, 9u, 124u, 9u, 124u, 0u, 0u,
9u, 122u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 122u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u,
9u, 124u, 9u, 124u, 9u, 124u, 0 9u, 124u, 9u, 124u, 9u, 124u, 0
}; };
static const char _deserialize_text_key_spans[] = { static const char _deserialize_text_key_spans[] = {
0, 114, 13, 10, 13, 10, 10, 13, 0, 114, 13, 10, 13, 10, 10, 13,
10, 1, 13, 10, 14, 116, 116, 0, 10, 1, 13, 10, 14, 116, 116, 0,
114, 116, 116, 116, 116, 116, 116, 116, 114, 116, 116, 116, 116, 116, 116, 116,
116, 116, 116 116, 116, 116
}; };
static const short _deserialize_text_index_offsets[] = { static const short _deserialize_text_index_offsets[] = {
0, 0, 115, 129, 140, 154, 165, 176, 0, 0, 115, 129, 140, 154, 165, 176,
190, 201, 203, 217, 228, 243, 360, 477, 190, 201, 203, 217, 228, 243, 360, 477,
478, 593, 710, 827, 944, 1061, 1178, 1295, 478, 593, 710, 827, 944, 1061, 1178, 1295,
1412, 1529, 1646 1412, 1529, 1646
}; };
static const char _deserialize_text_indicies[] = { static const char _deserialize_text_indicies[] = {
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3,
3, 3, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 1, 1, 1, 1, 1, 4, 4, 4, 1, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 1, 5, 1, 1, 6, 4, 4, 4, 1, 5, 1, 1, 6,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 1, 8, 9, 9, 9, 9, 9, 7, 1, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 1, 10, 1, 1, 9, 9, 9, 9, 1, 10, 1, 1,
11, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12,
12, 12, 1, 13, 14, 14, 14, 14, 12, 12, 1, 13, 14, 14, 14, 14,
14, 14, 14, 14, 14, 1, 15, 16, 14, 14, 14, 14, 14, 1, 15, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1, 17, 1, 1, 18, 19, 19, 19, 1, 17, 1, 1, 18, 19, 19, 19,
19, 19, 19, 19, 19, 19, 1, 20, 19, 19, 19, 19, 19, 19, 1, 20,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 1, 22, 1, 23, 1, 1, 24, 21, 1, 22, 1, 23, 1, 1, 24,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
25, 1, 26, 27, 27, 27, 27, 27, 25, 1, 26, 27, 27, 27, 27, 27,
27, 27, 27, 27, 1, 22, 1, 1, 27, 27, 27, 27, 1, 22, 1, 1,
1, 21, 21, 21, 21, 21, 21, 21, 1, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 1, 28, 28, 28, 28, 21, 21, 21, 1, 28, 28, 28, 28,
28, 1, 1, 1, 1, 1, 1, 1, 28, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 28, 1, 1, 1, 1, 1, 1, 1, 28, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 29, 1, 1, 1, 1, 1, 1, 1, 29, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
30, 1, 1, 31, 1, 1, 1, 1, 30, 1, 1, 31, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
32, 1, 1, 1, 1, 1, 1, 1, 32, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 33, 1, 1, 1, 1, 1, 1, 1, 33,
1, 34, 34, 34, 34, 34, 1, 1, 1, 34, 34, 34, 34, 34, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
34, 1, 1, 1, 1, 1, 1, 1, 34, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 35, 1, 1, 1, 1, 1, 1, 1, 35, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 36, 1, 1, 0, 1, 1, 1, 1, 36, 1, 1, 0,
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 2, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 1, 1, 1, 1, 1, 1, 4, 4, 1, 1, 1, 1, 1, 1, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 1, 28, 28, 28, 28, 28, 1, 4, 1, 28, 28, 28, 28, 28, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 28, 1, 1, 1, 1, 1, 1, 1, 28, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 29, 1, 1, 1, 1, 1, 1, 1, 29, 1, 1, 1,
1, 37, 37, 37, 37, 37, 37, 37, 1, 37, 37, 37, 37, 37, 37, 37,
37, 37, 37, 1, 1, 1, 30, 1, 37, 37, 37, 1, 1, 1, 30, 1,
1, 31, 1, 1, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 32, 1, 1, 1, 1, 1, 1, 1, 32, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 33, 1, 38, 1, 1, 1, 1, 1, 33, 1, 38,
38, 38, 38, 38, 1, 1, 1, 1, 38, 38, 38, 38, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 38, 1, 1, 1, 1, 1, 1, 1, 38, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 39, 1, 1, 1, 1, 1, 1, 1, 39, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 40, 1, 1, 1, 1, 1, 1, 1, 40, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 41, 1, 42, 42, 42, 42, 1, 1, 41, 1, 42, 42, 42, 42,
42, 1, 1, 1, 1, 1, 1, 1, 42, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 42, 1, 1, 1, 1, 1, 1, 1, 42, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
43, 1, 1, 1, 1, 1, 1, 1, 43, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 44, 1, 1, 1, 1, 1, 1, 1, 44,
1, 42, 42, 42, 42, 42, 1, 1, 1, 42, 42, 42, 42, 42, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
42, 1, 1, 1, 1, 1, 1, 1, 42, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 1, 1, 1, 1, 1, 1, 14, 14, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 43, 1, 1, 1, 1, 1, 1, 1, 43, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 44, 1, 38, 38, 1, 1, 1, 1, 44, 1, 38, 38,
38, 38, 38, 1, 1, 1, 1, 1, 38, 38, 38, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 38, 1, 1, 1, 1, 1, 1, 1, 38, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 39, 1, 1, 1, 9, 9, 9, 1, 39, 1, 1, 1, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 1, 9, 9, 9, 9, 9, 9, 9, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 40, 1, 1, 1, 1, 1, 1, 1, 40, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 41, 1, 45, 45, 45, 45, 45, 1, 41, 1, 45, 45, 45, 45, 45,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 45, 1, 1, 1, 1, 1, 1, 1, 45, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 46, 1, 1, 1, 1, 1, 1, 1, 46, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 47, 1, 1, 1, 1, 1, 1, 1, 47, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 48, 1, 1, 1, 1, 1, 1, 1, 48,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 49, 1, 1, 1, 1, 1, 1, 1, 49, 1,
50, 50, 50, 50, 50, 1, 1, 1, 50, 50, 50, 50, 50, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 50, 1, 1, 1, 1, 1, 1, 1, 50,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 51, 1, 1, 1, 1, 1, 1, 1, 51, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 52, 1, 1, 1, 1, 1, 1, 1, 52, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 53, 1, 50, 50, 50, 1, 1, 1, 53, 1, 50, 50, 50,
50, 50, 1, 1, 1, 1, 1, 1, 50, 50, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 50, 1, 1, 1, 1, 1, 1, 1, 50, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 51, 1, 1, 1, 1, 1, 1, 1, 51,
1, 1, 1, 1, 27, 27, 27, 27, 1, 1, 1, 1, 27, 27, 27, 27,
27, 27, 27, 27, 27, 27, 1, 1, 27, 27, 27, 27, 27, 27, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 52, 1, 1, 1, 1, 1, 1, 1, 52, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
53, 1, 45, 45, 45, 45, 45, 1, 53, 1, 45, 45, 45, 45, 45, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 45, 1, 1, 1, 1, 1, 1, 1, 45, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 46, 1, 1, 1, 1, 1, 1, 1, 46, 1, 1, 1,
1, 54, 54, 54, 54, 54, 54, 54, 1, 54, 54, 54, 54, 54, 54, 54,
54, 54, 54, 1, 1, 1, 1, 1, 54, 54, 54, 1, 1, 1, 1, 1,
1, 47, 1, 1, 1, 1, 1, 1, 1, 47, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 48, 1, 1, 1, 1, 1, 1, 1, 48, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 49, 1, 28, 1, 1, 1, 1, 1, 49, 1, 28,
28, 28, 28, 28, 1, 1, 1, 1, 28, 28, 28, 28, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 28, 1, 1, 1, 1, 1, 1, 1, 28, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 29, 1, 55, 55, 1, 55, 55, 1, 29, 1, 55, 55, 1, 55, 55,
55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
1, 1, 1, 30, 1, 1, 31, 55, 1, 1, 1, 30, 1, 1, 31, 55,
55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
55, 1, 1, 32, 1, 55, 1, 55, 55, 1, 1, 32, 1, 55, 1, 55,
55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
55, 1, 33, 1, 0 55, 1, 33, 1, 0
}; };
static const char _deserialize_text_trans_targs[] = { static const char _deserialize_text_trans_targs[] = {
1, 0, 13, 17, 26, 3, 18, 21, 1, 0, 13, 17, 26, 3, 18, 21,
18, 21, 5, 19, 20, 19, 20, 22, 18, 21, 5, 19, 20, 19, 20, 22,
25, 8, 9, 12, 9, 12, 10, 11, 25, 8, 9, 12, 9, 12, 10, 11,
23, 24, 23, 24, 14, 2, 6, 7, 23, 24, 23, 24, 14, 2, 6, 7,
15, 16, 14, 15, 16, 17, 14, 4, 15, 16, 14, 15, 16, 17, 14, 4,
15, 16, 14, 15, 16, 14, 2, 7, 15, 16, 14, 15, 16, 14, 2, 7,
15, 16, 14, 2, 15, 16, 25, 26 15, 16, 14, 2, 15, 16, 25, 26
}; };
static const char _deserialize_text_trans_actions[] = { static const char _deserialize_text_trans_actions[] = {
0, 0, 1, 1, 1, 2, 2, 2, 0, 0, 1, 1, 1, 2, 2, 2,
0, 0, 2, 2, 2, 0, 0, 2, 0, 0, 2, 2, 2, 0, 0, 2,
2, 2, 2, 2, 0, 0, 3, 2, 2, 2, 2, 2, 0, 0, 3, 2,
2, 2, 0, 0, 4, 5, 5, 5, 2, 2, 0, 0, 4, 5, 5, 5,
4, 4, 0, 0, 0, 0, 6, 7, 4, 4, 0, 0, 0, 0, 6, 7,
6, 6, 8, 8, 8, 9, 10, 10, 6, 6, 8, 8, 8, 9, 10, 10,
9, 9, 11, 12, 11, 11, 0, 0 9, 9, 11, 12, 11, 11, 0, 0
}; };
static const char _deserialize_text_eof_actions[] = { static const char _deserialize_text_eof_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
0, 4, 6, 8, 8, 6, 9, 11, 0, 4, 6, 8, 8, 6, 9, 11,
11, 9, 4 11, 9, 4
}; };
...@@ -338,7 +338,7 @@ _hb_buffer_deserialize_glyphs_text (hb_buffer_t *buffer, ...@@ -338,7 +338,7 @@ _hb_buffer_deserialize_glyphs_text (hb_buffer_t *buffer,
int cs; int cs;
hb_glyph_info_t info = {0}; hb_glyph_info_t info = {0};
hb_glyph_position_t pos = {0}; hb_glyph_position_t pos = {0};
#line 343 "hb-buffer-deserialize-text.hh" #line 343 "hb-buffer-deserialize-text.hh"
{ {
cs = deserialize_text_start; cs = deserialize_text_start;
...@@ -422,7 +422,7 @@ _resume: ...@@ -422,7 +422,7 @@ _resume:
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
{ {
buffer->add_info (info); buffer->add_info (info);
if (buffer->in_error) if (unlikely (!buffer->successful))
return false; return false;
buffer->pos[buffer->len - 1] = pos; buffer->pos[buffer->len - 1] = pos;
*end_ptr = p; *end_ptr = p;
...@@ -434,7 +434,7 @@ _resume: ...@@ -434,7 +434,7 @@ _resume:
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
{ {
buffer->add_info (info); buffer->add_info (info);
if (buffer->in_error) if (unlikely (!buffer->successful))
return false; return false;
buffer->pos[buffer->len - 1] = pos; buffer->pos[buffer->len - 1] = pos;
*end_ptr = p; *end_ptr = p;
...@@ -446,7 +446,7 @@ _resume: ...@@ -446,7 +446,7 @@ _resume:
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
{ {
buffer->add_info (info); buffer->add_info (info);
if (buffer->in_error) if (unlikely (!buffer->successful))
return false; return false;
buffer->pos[buffer->len - 1] = pos; buffer->pos[buffer->len - 1] = pos;
*end_ptr = p; *end_ptr = p;
...@@ -458,7 +458,7 @@ _resume: ...@@ -458,7 +458,7 @@ _resume:
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
{ {
buffer->add_info (info); buffer->add_info (info);
if (buffer->in_error) if (unlikely (!buffer->successful))
return false; return false;
buffer->pos[buffer->len - 1] = pos; buffer->pos[buffer->len - 1] = pos;
*end_ptr = p; *end_ptr = p;
...@@ -470,7 +470,7 @@ _resume: ...@@ -470,7 +470,7 @@ _resume:
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
{ {
buffer->add_info (info); buffer->add_info (info);
if (buffer->in_error) if (unlikely (!buffer->successful))
return false; return false;
buffer->pos[buffer->len - 1] = pos; buffer->pos[buffer->len - 1] = pos;
*end_ptr = p; *end_ptr = p;
...@@ -499,7 +499,7 @@ _again: ...@@ -499,7 +499,7 @@ _again:
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
{ {
buffer->add_info (info); buffer->add_info (info);
if (buffer->in_error) if (unlikely (!buffer->successful))
return false; return false;
buffer->pos[buffer->len - 1] = pos; buffer->pos[buffer->len - 1] = pos;
*end_ptr = p; *end_ptr = p;
...@@ -511,7 +511,7 @@ _again: ...@@ -511,7 +511,7 @@ _again:
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
{ {
buffer->add_info (info); buffer->add_info (info);
if (buffer->in_error) if (unlikely (!buffer->successful))
return false; return false;
buffer->pos[buffer->len - 1] = pos; buffer->pos[buffer->len - 1] = pos;
*end_ptr = p; *end_ptr = p;
...@@ -523,7 +523,7 @@ _again: ...@@ -523,7 +523,7 @@ _again:
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
{ {
buffer->add_info (info); buffer->add_info (info);
if (buffer->in_error) if (unlikely (!buffer->successful))
return false; return false;
buffer->pos[buffer->len - 1] = pos; buffer->pos[buffer->len - 1] = pos;
*end_ptr = p; *end_ptr = p;
...@@ -535,7 +535,7 @@ _again: ...@@ -535,7 +535,7 @@ _again:
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
{ {
buffer->add_info (info); buffer->add_info (info);
if (buffer->in_error) if (unlikely (!buffer->successful))
return false; return false;
buffer->pos[buffer->len - 1] = pos; buffer->pos[buffer->len - 1] = pos;
*end_ptr = p; *end_ptr = p;
...@@ -547,7 +547,7 @@ _again: ...@@ -547,7 +547,7 @@ _again:
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
{ {
buffer->add_info (info); buffer->add_info (info);
if (buffer->in_error) if (unlikely (!buffer->successful))
return false; return false;
buffer->pos[buffer->len - 1] = pos; buffer->pos[buffer->len - 1] = pos;
*end_ptr = p; *end_ptr = p;
......
...@@ -42,7 +42,7 @@ action clear_item { ...@@ -42,7 +42,7 @@ action clear_item {
action add_item { action add_item {
buffer->add_info (info); buffer->add_info (info);
if (buffer->in_error) if (unlikely (!buffer->successful))
return false; return false;
buffer->pos[buffer->len - 1] = pos; buffer->pos[buffer->len - 1] = pos;
*end_ptr = p; *end_ptr = p;
......
...@@ -101,7 +101,7 @@ struct hb_buffer_t { ...@@ -101,7 +101,7 @@ struct hb_buffer_t {
hb_buffer_content_type_t content_type; hb_buffer_content_type_t content_type;
hb_segment_properties_t props; /* Script, language, direction */ hb_segment_properties_t props; /* Script, language, direction */
bool in_error; /* Allocation failed */ bool successful; /* Allocations successful */
bool have_output; /* Whether we have an output buffer going on */ bool have_output; /* Whether we have an output buffer going on */
bool have_positions; /* Whether we have positions */ bool have_positions; /* Whether we have positions */
......
...@@ -111,11 +111,11 @@ hb_segment_properties_hash (const hb_segment_properties_t *p) ...@@ -111,11 +111,11 @@ hb_segment_properties_hash (const hb_segment_properties_t *p)
bool bool
hb_buffer_t::enlarge (unsigned int size) hb_buffer_t::enlarge (unsigned int size)
{ {
if (unlikely (in_error)) if (unlikely (!successful))
return false; return false;
if (unlikely (size > max_len)) if (unlikely (size > max_len))
{ {
in_error = true; successful = false;
return false; return false;
} }
...@@ -139,7 +139,7 @@ hb_buffer_t::enlarge (unsigned int size) ...@@ -139,7 +139,7 @@ hb_buffer_t::enlarge (unsigned int size)
done: done:
if (unlikely (!new_pos || !new_info)) if (unlikely (!new_pos || !new_info))
in_error = true; successful = false;
if (likely (new_pos)) if (likely (new_pos))
pos = new_pos; pos = new_pos;
...@@ -148,10 +148,10 @@ done: ...@@ -148,10 +148,10 @@ done:
info = new_info; info = new_info;
out_info = separate_out ? (hb_glyph_info_t *) pos : info; out_info = separate_out ? (hb_glyph_info_t *) pos : info;
if (likely (!in_error)) if (likely (successful))
allocated = new_allocated; allocated = new_allocated;
return likely (!in_error); return likely (successful);
} }
bool bool
...@@ -234,7 +234,7 @@ hb_buffer_t::clear (void) ...@@ -234,7 +234,7 @@ hb_buffer_t::clear (void)
scratch_flags = HB_BUFFER_SCRATCH_FLAG_DEFAULT; scratch_flags = HB_BUFFER_SCRATCH_FLAG_DEFAULT;
content_type = HB_BUFFER_CONTENT_TYPE_INVALID; content_type = HB_BUFFER_CONTENT_TYPE_INVALID;
in_error = false; successful = true;
have_output = false; have_output = false;
have_positions = false; have_positions = false;
...@@ -324,7 +324,7 @@ hb_buffer_t::clear_positions (void) ...@@ -324,7 +324,7 @@ hb_buffer_t::clear_positions (void)
void void
hb_buffer_t::swap_buffers (void) hb_buffer_t::swap_buffers (void)
{ {
if (unlikely (in_error)) return; if (unlikely (!successful)) return;
assert (have_output); assert (have_output);
have_output = false; have_output = false;
...@@ -409,7 +409,7 @@ hb_buffer_t::move_to (unsigned int i) ...@@ -409,7 +409,7 @@ hb_buffer_t::move_to (unsigned int i)
idx = i; idx = i;
return true; return true;
} }
if (unlikely (in_error)) if (unlikely (!successful))
return false; return false;
assert (i <= out_len + (len - idx)); assert (i <= out_len + (len - idx));
...@@ -756,7 +756,7 @@ hb_buffer_get_empty (void) ...@@ -756,7 +756,7 @@ hb_buffer_get_empty (void)
HB_BUFFER_CONTENT_TYPE_INVALID, HB_BUFFER_CONTENT_TYPE_INVALID,
HB_SEGMENT_PROPERTIES_DEFAULT, HB_SEGMENT_PROPERTIES_DEFAULT,
true, /* in_error */ false, /* successful */
true, /* have_output */ true, /* have_output */
true /* have_positions */ true /* have_positions */
...@@ -1271,7 +1271,7 @@ hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size) ...@@ -1271,7 +1271,7 @@ hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size)
hb_bool_t hb_bool_t
hb_buffer_allocation_successful (hb_buffer_t *buffer) hb_buffer_allocation_successful (hb_buffer_t *buffer)
{ {
return !buffer->in_error; return buffer->successful;
} }
/** /**
...@@ -1754,13 +1754,13 @@ hb_buffer_append (hb_buffer_t *buffer, ...@@ -1754,13 +1754,13 @@ hb_buffer_append (hb_buffer_t *buffer,
if (buffer->len + (end - start) < buffer->len) /* Overflows. */ if (buffer->len + (end - start) < buffer->len) /* Overflows. */
{ {
buffer->in_error = true; buffer->successful = false;
return; return;
} }
unsigned int orig_len = buffer->len; unsigned int orig_len = buffer->len;
hb_buffer_set_length (buffer, buffer->len + (end - start)); hb_buffer_set_length (buffer, buffer->len + (end - start));
if (buffer->in_error) if (unlikely (!buffer->successful))
return; return;
memcpy (buffer->info + orig_len, source->info + start, (end - start) * sizeof (buffer->info[0])); memcpy (buffer->info + orig_len, source->info + start, (end - start) * sizeof (buffer->info[0]));
......
...@@ -99,7 +99,7 @@ struct hb_map_t ...@@ -99,7 +99,7 @@ struct hb_map_t
hb_object_header_t header; hb_object_header_t header;
ASSERT_POD (); ASSERT_POD ();
bool in_error; bool successful; /* Allocations successful */
unsigned int population; /* Not including tombstones. */ unsigned int population; /* Not including tombstones. */
unsigned int occupancy; /* Including tombstones. */ unsigned int occupancy; /* Including tombstones. */
unsigned int mask; unsigned int mask;
...@@ -108,7 +108,7 @@ struct hb_map_t ...@@ -108,7 +108,7 @@ struct hb_map_t
inline void init_shallow (void) inline void init_shallow (void)
{ {
in_error = false; successful = true;
population = occupancy = 0; population = occupancy = 0;
mask = 0; mask = 0;
prime = 0; prime = 0;
...@@ -131,14 +131,14 @@ struct hb_map_t ...@@ -131,14 +131,14 @@ struct hb_map_t
inline bool resize (void) inline bool resize (void)
{ {
if (unlikely (in_error)) return false; if (unlikely (!successful)) return false;
unsigned int power = _hb_bit_storage (population * 2 + 8); unsigned int power = _hb_bit_storage (population * 2 + 8);
unsigned int new_size = 1u << power; unsigned int new_size = 1u << power;
item_t *new_items = (item_t *) malloc ((size_t) new_size * sizeof (item_t)); item_t *new_items = (item_t *) malloc ((size_t) new_size * sizeof (item_t));
if (unlikely (!new_items)) if (unlikely (!new_items))
{ {
in_error = true; successful = false;
return false; return false;
} }
memset (new_items, 0xFF, (size_t) new_size * sizeof (item_t)); memset (new_items, 0xFF, (size_t) new_size * sizeof (item_t));
...@@ -165,7 +165,7 @@ struct hb_map_t ...@@ -165,7 +165,7 @@ struct hb_map_t
inline void set (hb_codepoint_t key, hb_codepoint_t value) inline void set (hb_codepoint_t key, hb_codepoint_t value)
{ {
if (unlikely (in_error)) return; if (unlikely (!successful)) return;
if (unlikely (key == INVALID)) return; if (unlikely (key == INVALID)) return;
if ((occupancy + occupancy / 2) >= mask && !resize ()) return; if ((occupancy + occupancy / 2) >= mask && !resize ()) return;
unsigned int i = bucket_for (key); unsigned int i = bucket_for (key);
......
...@@ -52,7 +52,7 @@ hb_map_create (void) ...@@ -52,7 +52,7 @@ hb_map_create (void)
static const hb_map_t _hb_map_nil = { static const hb_map_t _hb_map_nil = {
HB_OBJECT_HEADER_STATIC, HB_OBJECT_HEADER_STATIC,
true, /* in_error */ false, /* successful */
0, /* population */ 0, /* population */
0, /* occupancy */ 0, /* occupancy */
0, /* mask */ 0, /* mask */
...@@ -155,7 +155,7 @@ hb_map_get_user_data (hb_map_t *map, ...@@ -155,7 +155,7 @@ hb_map_get_user_data (hb_map_t *map,
hb_bool_t hb_bool_t
hb_map_allocation_successful (const hb_map_t *map) hb_map_allocation_successful (const hb_map_t *map)
{ {
return !map->in_error; return map->successful;
} }
......
...@@ -855,7 +855,7 @@ static inline bool ligate_input (hb_ot_apply_context_t *c, ...@@ -855,7 +855,7 @@ static inline bool ligate_input (hb_ot_apply_context_t *c,
for (unsigned int i = 1; i < count; i++) for (unsigned int i = 1; i < count; i++)
{ {
while (buffer->idx < match_positions[i] && !buffer->in_error) while (buffer->idx < match_positions[i] && buffer->successful)
{ {
if (!is_mark_ligature) { if (!is_mark_ligature) {
unsigned int this_comp = _hb_glyph_info_get_lig_comp (&buffer->cur()); unsigned int this_comp = _hb_glyph_info_get_lig_comp (&buffer->cur());
...@@ -990,7 +990,7 @@ static inline bool apply_lookup (hb_ot_apply_context_t *c, ...@@ -990,7 +990,7 @@ static inline bool apply_lookup (hb_ot_apply_context_t *c,
match_positions[j] += delta; match_positions[j] += delta;
} }
for (unsigned int i = 0; i < lookupCount && !buffer->in_error; i++) for (unsigned int i = 0; i < lookupCount && buffer->successful; i++)
{ {
unsigned int idx = lookupRecord[i].sequenceIndex; unsigned int idx = lookupRecord[i].sequenceIndex;
if (idx >= count) if (idx >= count)
......
...@@ -1121,7 +1121,7 @@ apply_forward (OT::hb_ot_apply_context_t *c, ...@@ -1121,7 +1121,7 @@ apply_forward (OT::hb_ot_apply_context_t *c,
{ {
bool ret = false; bool ret = false;
hb_buffer_t *buffer = c->buffer; hb_buffer_t *buffer = c->buffer;
while (buffer->idx < buffer->len && !buffer->in_error) while (buffer->idx < buffer->len && buffer->successful)
{ {
bool applied = false; bool applied = false;
if (accel.may_have (buffer->cur().codepoint) && if (accel.may_have (buffer->cur().codepoint) &&
......
...@@ -188,7 +188,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan, ...@@ -188,7 +188,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan,
*/ */
unsigned int count = buffer->len; unsigned int count = buffer->len;
for (buffer->idx = 0; buffer->idx < count && !buffer->in_error;) for (buffer->idx = 0; buffer->idx < count && buffer->successful;)
{ {
hb_codepoint_t u = buffer->cur().codepoint; hb_codepoint_t u = buffer->cur().codepoint;
...@@ -269,7 +269,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan, ...@@ -269,7 +269,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan,
if (font->has_glyph (s)) if (font->has_glyph (s))
{ {
buffer->replace_glyphs (t ? 3 : 2, 1, &s); buffer->replace_glyphs (t ? 3 : 2, 1, &s);
if (unlikely (buffer->in_error)) if (unlikely (!buffer->successful))
return; return;
end = start + 1; end = start + 1;
continue; continue;
...@@ -319,7 +319,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan, ...@@ -319,7 +319,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan,
if (font->has_glyph (new_s)) if (font->has_glyph (new_s))
{ {
buffer->replace_glyphs (2, 1, &new_s); buffer->replace_glyphs (2, 1, &new_s);
if (unlikely (buffer->in_error)) if (unlikely (!buffer->successful))
return; return;
end = start + 1; end = start + 1;
continue; continue;
...@@ -345,7 +345,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan, ...@@ -345,7 +345,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan,
{ {
unsigned int s_len = tindex ? 3 : 2; unsigned int s_len = tindex ? 3 : 2;
buffer->replace_glyphs (1, s_len, decomposed); buffer->replace_glyphs (1, s_len, decomposed);
if (unlikely (buffer->in_error)) if (unlikely (!buffer->successful))
return; return;
/* We decomposed S: apply jamo features to the individual glyphs /* We decomposed S: apply jamo features to the individual glyphs
......
...@@ -974,7 +974,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED, ...@@ -974,7 +974,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
buffer->idx = 0; buffer->idx = 0;
unsigned int last_syllable = 0; unsigned int last_syllable = 0;
while (buffer->idx < buffer->len && !buffer->in_error) while (buffer->idx < buffer->len && buffer->successful)
{ {
unsigned int syllable = buffer->cur().syllable(); unsigned int syllable = buffer->cur().syllable();
syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F); syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F);
...@@ -989,7 +989,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED, ...@@ -989,7 +989,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
/* TODO Set glyph_props? */ /* TODO Set glyph_props? */
/* Insert dottedcircle after possible Repha. */ /* Insert dottedcircle after possible Repha. */
while (buffer->idx < buffer->len && !buffer->in_error && while (buffer->idx < buffer->len && buffer->successful &&
last_syllable == buffer->cur().syllable() && last_syllable == buffer->cur().syllable() &&
buffer->cur().indic_category() == OT_Repha) buffer->cur().indic_category() == OT_Repha)
buffer->next_glyph (); buffer->next_glyph ();
......
...@@ -485,7 +485,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED, ...@@ -485,7 +485,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
buffer->idx = 0; buffer->idx = 0;
unsigned int last_syllable = 0; unsigned int last_syllable = 0;
while (buffer->idx < buffer->len && !buffer->in_error) while (buffer->idx < buffer->len && buffer->successful)
{ {
unsigned int syllable = buffer->cur().syllable(); unsigned int syllable = buffer->cur().syllable();
syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F); syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F);
...@@ -500,7 +500,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED, ...@@ -500,7 +500,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
/* TODO Set glyph_props? */ /* TODO Set glyph_props? */
/* Insert dottedcircle after possible Repha. */ /* Insert dottedcircle after possible Repha. */
while (buffer->idx < buffer->len && !buffer->in_error && while (buffer->idx < buffer->len && buffer->successful &&
last_syllable == buffer->cur().syllable() && last_syllable == buffer->cur().syllable() &&
buffer->cur().khmer_category() == OT_Repha) buffer->cur().khmer_category() == OT_Repha)
buffer->next_glyph (); buffer->next_glyph ();
......
...@@ -312,7 +312,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED, ...@@ -312,7 +312,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
buffer->idx = 0; buffer->idx = 0;
unsigned int last_syllable = 0; unsigned int last_syllable = 0;
while (buffer->idx < buffer->len && !buffer->in_error) while (buffer->idx < buffer->len && buffer->successful)
{ {
unsigned int syllable = buffer->cur().syllable(); unsigned int syllable = buffer->cur().syllable();
syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F); syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F);
......
...@@ -315,7 +315,7 @@ preprocess_text_thai (const hb_ot_shape_plan_t *plan, ...@@ -315,7 +315,7 @@ preprocess_text_thai (const hb_ot_shape_plan_t *plan,
buffer->clear_output (); buffer->clear_output ();
unsigned int count = buffer->len; unsigned int count = buffer->len;
for (buffer->idx = 0; buffer->idx < count && !buffer->in_error;) for (buffer->idx = 0; buffer->idx < count && buffer->successful;)
{ {
hb_codepoint_t u = buffer->cur().codepoint; hb_codepoint_t u = buffer->cur().codepoint;
if (likely (!IS_SARA_AM (u))) { if (likely (!IS_SARA_AM (u))) {
...@@ -327,7 +327,7 @@ preprocess_text_thai (const hb_ot_shape_plan_t *plan, ...@@ -327,7 +327,7 @@ preprocess_text_thai (const hb_ot_shape_plan_t *plan,
hb_codepoint_t decomposed[2] = {hb_codepoint_t (NIKHAHIT_FROM_SARA_AM (u)), hb_codepoint_t decomposed[2] = {hb_codepoint_t (NIKHAHIT_FROM_SARA_AM (u)),
hb_codepoint_t (SARA_AA_FROM_SARA_AM (u))}; hb_codepoint_t (SARA_AA_FROM_SARA_AM (u))};
buffer->replace_glyphs (1, 2, decomposed); buffer->replace_glyphs (1, 2, decomposed);
if (unlikely (buffer->in_error)) if (unlikely (!buffer->successful))
return; return;
/* Make Nikhahit be recognized as a ccc=0 mark when zeroing widths. */ /* Make Nikhahit be recognized as a ccc=0 mark when zeroing widths. */
......
...@@ -511,7 +511,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED, ...@@ -511,7 +511,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
buffer->idx = 0; buffer->idx = 0;
unsigned int last_syllable = 0; unsigned int last_syllable = 0;
while (buffer->idx < buffer->len && !buffer->in_error) while (buffer->idx < buffer->len && buffer->successful)
{ {
unsigned int syllable = buffer->cur().syllable(); unsigned int syllable = buffer->cur().syllable();
syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F); syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F);
...@@ -526,7 +526,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED, ...@@ -526,7 +526,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
/* TODO Set glyph_props? */ /* TODO Set glyph_props? */
/* Insert dottedcircle after possible Repha. */ /* Insert dottedcircle after possible Repha. */
while (buffer->idx < buffer->len && !buffer->in_error && while (buffer->idx < buffer->len && buffer->successful &&
last_syllable == buffer->cur().syllable() && last_syllable == buffer->cur().syllable() &&
buffer->cur().use_category() == USE_R) buffer->cur().use_category() == USE_R)
buffer->next_glyph (); buffer->next_glyph ();
......
...@@ -218,7 +218,7 @@ handle_variation_selector_cluster (const hb_ot_shape_normalize_context_t *c, uns ...@@ -218,7 +218,7 @@ handle_variation_selector_cluster (const hb_ot_shape_normalize_context_t *c, uns
/* TODO Currently if there's a variation-selector we give-up, it's just too hard. */ /* TODO Currently if there's a variation-selector we give-up, it's just too hard. */
hb_buffer_t * const buffer = c->buffer; hb_buffer_t * const buffer = c->buffer;
hb_font_t * const font = c->font; hb_font_t * const font = c->font;
for (; buffer->idx < end - 1 && !buffer->in_error;) { for (; buffer->idx < end - 1 && buffer->successful;) {
if (unlikely (buffer->unicode->is_variation_selector (buffer->cur(+1).codepoint))) { if (unlikely (buffer->unicode->is_variation_selector (buffer->cur(+1).codepoint))) {
/* The next two lines are some ugly lines... But work. */ /* The next two lines are some ugly lines... But work. */
if (font->get_variation_glyph (buffer->cur().codepoint, buffer->cur(+1).codepoint, &buffer->cur().glyph_index())) if (font->get_variation_glyph (buffer->cur().codepoint, buffer->cur(+1).codepoint, &buffer->cur().glyph_index()))
...@@ -254,13 +254,13 @@ static inline void ...@@ -254,13 +254,13 @@ static inline void
decompose_multi_char_cluster (const hb_ot_shape_normalize_context_t *c, unsigned int end, bool short_circuit) decompose_multi_char_cluster (const hb_ot_shape_normalize_context_t *c, unsigned int end, bool short_circuit)
{ {
hb_buffer_t * const buffer = c->buffer; hb_buffer_t * const buffer = c->buffer;
for (unsigned int i = buffer->idx; i < end && !buffer->in_error; i++) for (unsigned int i = buffer->idx; i < end && buffer->successful; i++)
if (unlikely (buffer->unicode->is_variation_selector (buffer->info[i].codepoint))) { if (unlikely (buffer->unicode->is_variation_selector (buffer->info[i].codepoint))) {
handle_variation_selector_cluster (c, end, short_circuit); handle_variation_selector_cluster (c, end, short_circuit);
return; return;
} }
while (buffer->idx < end && !buffer->in_error) while (buffer->idx < end && buffer->successful)
decompose_current_character (c, short_circuit); decompose_current_character (c, short_circuit);
} }
...@@ -320,7 +320,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan, ...@@ -320,7 +320,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
buffer->clear_output (); buffer->clear_output ();
count = buffer->len; count = buffer->len;
for (buffer->idx = 0; buffer->idx < count && !buffer->in_error;) for (buffer->idx = 0; buffer->idx < count && buffer->successful;)
{ {
unsigned int end; unsigned int end;
for (end = buffer->idx + 1; end < count; end++) for (end = buffer->idx + 1; end < count; end++)
...@@ -373,7 +373,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan, ...@@ -373,7 +373,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
count = buffer->len; count = buffer->len;
unsigned int starter = 0; unsigned int starter = 0;
buffer->next_glyph (); buffer->next_glyph ();
while (buffer->idx < count && !buffer->in_error) while (buffer->idx < count && buffer->successful)
{ {
hb_codepoint_t composed, glyph; hb_codepoint_t composed, glyph;
if (/* We don't try to compose a non-mark character with it's preceding starter. if (/* We don't try to compose a non-mark character with it's preceding starter.
...@@ -396,7 +396,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan, ...@@ -396,7 +396,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
{ {
/* Composes. */ /* Composes. */
buffer->next_glyph (); /* Copy to out-buffer. */ buffer->next_glyph (); /* Copy to out-buffer. */
if (unlikely (buffer->in_error)) if (unlikely (!buffer->successful))
return; return;
buffer->merge_out_clusters (starter, buffer->out_len); buffer->merge_out_clusters (starter, buffer->out_len);
buffer->out_len--; /* Remove the second composable. */ buffer->out_len--; /* Remove the second composable. */
......
...@@ -268,7 +268,7 @@ hb_insert_dotted_circle (hb_buffer_t *buffer, hb_font_t *font) ...@@ -268,7 +268,7 @@ hb_insert_dotted_circle (hb_buffer_t *buffer, hb_font_t *font)
info.cluster = buffer->cur().cluster; info.cluster = buffer->cur().cluster;
info.mask = buffer->cur().mask; info.mask = buffer->cur().mask;
buffer->output_info (info); buffer->output_info (info);
while (buffer->idx < buffer->len && !buffer->in_error) while (buffer->idx < buffer->len && buffer->successful)
buffer->next_glyph (); buffer->next_glyph ();
buffer->swap_buffers (); buffer->swap_buffers ();
......
...@@ -181,14 +181,14 @@ struct hb_set_t ...@@ -181,14 +181,14 @@ struct hb_set_t
hb_object_header_t header; hb_object_header_t header;
ASSERT_POD (); ASSERT_POD ();
bool in_error; bool successful; /* Allocations successful */
mutable unsigned int population; mutable unsigned int population;
hb_vector_t<page_map_t, 8> page_map; hb_vector_t<page_map_t, 8> page_map;
hb_vector_t<page_t, 1> pages; hb_vector_t<page_t, 1> pages;
inline void init_shallow (void) inline void init_shallow (void)
{ {
in_error = false; successful = true;
population = 0; population = 0;
page_map.init (); page_map.init ();
pages.init (); pages.init ();
...@@ -211,11 +211,11 @@ struct hb_set_t ...@@ -211,11 +211,11 @@ struct hb_set_t
inline bool resize (unsigned int count) inline bool resize (unsigned int count)
{ {
if (unlikely (in_error)) return false; if (unlikely (!successful)) return false;
if (!pages.resize (count) || !page_map.resize (count)) if (!pages.resize (count) || !page_map.resize (count))
{ {
pages.resize (page_map.len); pages.resize (page_map.len);
in_error = true; successful = false;
return false; return false;
} }
return true; return true;
...@@ -224,7 +224,7 @@ struct hb_set_t ...@@ -224,7 +224,7 @@ struct hb_set_t
inline void clear (void) { inline void clear (void) {
if (unlikely (hb_object_is_inert (this))) if (unlikely (hb_object_is_inert (this)))
return; return;
in_error = false; successful = true;
population = 0; population = 0;
page_map.resize (0); page_map.resize (0);
pages.resize (0); pages.resize (0);
...@@ -241,7 +241,7 @@ struct hb_set_t ...@@ -241,7 +241,7 @@ struct hb_set_t
inline void add (hb_codepoint_t g) inline void add (hb_codepoint_t g)
{ {
if (unlikely (in_error)) return; if (unlikely (!successful)) return;
if (unlikely (g == INVALID)) return; if (unlikely (g == INVALID)) return;
dirty (); dirty ();
page_t *page = page_for_insert (g); if (unlikely (!page)) return; page_t *page = page_for_insert (g); if (unlikely (!page)) return;
...@@ -249,7 +249,7 @@ struct hb_set_t ...@@ -249,7 +249,7 @@ struct hb_set_t
} }
inline bool add_range (hb_codepoint_t a, hb_codepoint_t b) inline bool add_range (hb_codepoint_t a, hb_codepoint_t b)
{ {
if (unlikely (in_error)) return true; /* https://github.com/harfbuzz/harfbuzz/issues/657 */ if (unlikely (!successful)) return true; /* https://github.com/harfbuzz/harfbuzz/issues/657 */
if (unlikely (a > b || a == INVALID || b == INVALID)) return false; if (unlikely (a > b || a == INVALID || b == INVALID)) return false;
dirty (); dirty ();
unsigned int ma = get_major (a); unsigned int ma = get_major (a);
...@@ -279,7 +279,7 @@ struct hb_set_t ...@@ -279,7 +279,7 @@ struct hb_set_t
template <typename T> template <typename T>
inline void add_array (const T *array, unsigned int count, unsigned int stride=sizeof(T)) inline void add_array (const T *array, unsigned int count, unsigned int stride=sizeof(T))
{ {
if (unlikely (in_error)) return; if (unlikely (!successful)) return;
if (!count) return; if (!count) return;
dirty (); dirty ();
hb_codepoint_t g = *array; hb_codepoint_t g = *array;
...@@ -305,7 +305,7 @@ struct hb_set_t ...@@ -305,7 +305,7 @@ struct hb_set_t
template <typename T> template <typename T>
inline bool add_sorted_array (const T *array, unsigned int count, unsigned int stride=sizeof(T)) inline bool add_sorted_array (const T *array, unsigned int count, unsigned int stride=sizeof(T))
{ {
if (unlikely (in_error)) return true; /* https://github.com/harfbuzz/harfbuzz/issues/657 */ if (unlikely (!successful)) return true; /* https://github.com/harfbuzz/harfbuzz/issues/657 */
if (!count) return true; if (!count) return true;
dirty (); dirty ();
hb_codepoint_t g = *array; hb_codepoint_t g = *array;
...@@ -333,7 +333,8 @@ struct hb_set_t ...@@ -333,7 +333,8 @@ struct hb_set_t
inline void del (hb_codepoint_t g) inline void del (hb_codepoint_t g)
{ {
if (unlikely (in_error)) return; /* TODO perform op even if !successful. */
if (unlikely (!successful)) return;
page_t *p = page_for (g); page_t *p = page_for (g);
if (!p) if (!p)
return; return;
...@@ -342,8 +343,9 @@ struct hb_set_t ...@@ -342,8 +343,9 @@ struct hb_set_t
} }
inline void del_range (hb_codepoint_t a, hb_codepoint_t b) inline void del_range (hb_codepoint_t a, hb_codepoint_t b)
{ {
/* TODO perform op even if !successful. */
/* TODO Optimize, like add_range(). */ /* TODO Optimize, like add_range(). */
if (unlikely (in_error)) return; if (unlikely (!successful)) return;
for (unsigned int i = a; i < b + 1; i++) for (unsigned int i = a; i < b + 1; i++)
del (i); del (i);
} }
...@@ -362,7 +364,7 @@ struct hb_set_t ...@@ -362,7 +364,7 @@ struct hb_set_t
} }
inline void set (const hb_set_t *other) inline void set (const hb_set_t *other)
{ {
if (unlikely (in_error)) return; if (unlikely (!successful)) return;
unsigned int count = other->pages.len; unsigned int count = other->pages.len;
if (!resize (count)) if (!resize (count))
return; return;
...@@ -401,7 +403,7 @@ struct hb_set_t ...@@ -401,7 +403,7 @@ struct hb_set_t
template <class Op> template <class Op>
inline void process (const hb_set_t *other) inline void process (const hb_set_t *other)
{ {
if (unlikely (in_error)) return; if (unlikely (!successful)) return;
dirty (); dirty ();
......
...@@ -52,7 +52,7 @@ hb_set_create (void) ...@@ -52,7 +52,7 @@ hb_set_create (void)
static const hb_set_t _hb_set_nil = { static const hb_set_t _hb_set_nil = {
HB_OBJECT_HEADER_STATIC, HB_OBJECT_HEADER_STATIC,
true, /* in_error */ false, /* successful */
0, /* population */ 0, /* population */
{0} /* elts */ {0} /* elts */
...@@ -153,7 +153,7 @@ hb_set_get_user_data (hb_set_t *set, ...@@ -153,7 +153,7 @@ hb_set_get_user_data (hb_set_t *set,
hb_bool_t hb_bool_t
hb_set_allocation_successful (const hb_set_t *set) hb_set_allocation_successful (const hb_set_t *set)
{ {
return !set->in_error; return set->successful;
} }
/** /**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册