| @@ -1,22 +1,26 @@ | | | @@ -1,22 +1,26 @@ |
1 | $NetBSD: patch-src_dict_table.cc,v 1.1.2.2 2015/04/18 12:02:41 bsiegert Exp $ | | 1 | $NetBSD: patch-src_dict_table.cc,v 1.1.2.3 2015/04/25 19:28:44 bsiegert Exp $ |
2 | | | 2 | |
3 | --- src/dict/table.cc.orig 2013-11-10 10:20:21.000000000 +0000 | | 3 | Entries in the output file are generally not correctly aligned, |
4 | +++ src/dict/table.cc | | 4 | so tell the compiler explicitly about this fact and use memcpy |
5 | @@ -403,14 +403,15 @@ bool Table::BuildEntryList(const DictEnt | | 5 | for writing the data. |
| | | 6 | |
| | | 7 | --- src/dict/table.cc.orig 2013-11-10 19:20:21.000000000 +0900 |
| | | 8 | +++ src/dict/table.cc 2015-04-18 12:14:33.000000000 +0900 |
| | | 9 | @@ -403,14 +403,15 @@ |
6 | return true; | | 10 | return true; |
7 | } | | 11 | } |
8 | | | 12 | |
9 | -bool Table::BuildEntry(const DictEntry &dict_entry, table::Entry *entry) { | | 13 | -bool Table::BuildEntry(const DictEntry &dict_entry, table::Entry *entry) { |
10 | +bool Table::BuildEntry(const DictEntry &dict_entry, __attribute__((aligned(1))) table::Entry *entry) { | | 14 | +bool Table::BuildEntry(const DictEntry &dict_entry, table::Entry * __attribute__((aligned(1))) entry) { |
11 | if (!entry) | | 15 | if (!entry) |
12 | return false; | | 16 | return false; |
13 | if (!CopyString(dict_entry.text, &entry->text)) { | | 17 | if (!CopyString(dict_entry.text, &entry->text)) { |
14 | LOG(ERROR) << "Error creating table entry '" << dict_entry.text << "'; file size: " << file_size(); | | 18 | LOG(ERROR) << "Error creating table entry '" << dict_entry.text << "'; file size: " << file_size(); |
15 | return false; | | 19 | return false; |
16 | } | | 20 | } |
17 | - entry->weight = static_cast<float>(dict_entry.weight); | | 21 | - entry->weight = static_cast<float>(dict_entry.weight); |
18 | + float weight = static_cast<float>(dict_entry.weight); | | 22 | + float weight = static_cast<float>(dict_entry.weight); |
19 | + memcpy(&entry->weight, &weight, sizeof(weight)); | | 23 | + memcpy(&entry->weight, &weight, sizeof(weight)); |
20 | return true; | | 24 | return true; |
21 | } | | 25 | } |
22 | | | 26 | |