summaryrefslogtreecommitdiff
blob: 5e782e61fb0c070577f40802446a0bc56c88e6df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
https://bugs.gentoo.org/894362
https://github.com/taku910/mecab/pull/66

From 731d738f33dcf62dc9da93104ca1dd6f4c7c9c5f Mon Sep 17 00:00:00 2001
From: Yuriy Chernyshov <thegeorg@yandex-team.ru>
Date: Fri, 11 Feb 2022 12:31:33 +0300
Subject: [PATCH 1/2] Remove register storage specifier

register does not work in modern C / C++.
--- a/src/char_property.h
+++ b/src/char_property.h
@@ -37,7 +37,7 @@ class CharProperty {
   inline const char *seekToOtherType(const char *begin, const char *end,
                                      CharInfo c, CharInfo *fail,
                                      size_t *mblen, size_t *clen) const {
-    register const char *p =  begin;
+    const char *p =  begin;
     *clen = 0;
     while (p != end && c.isKindOf(*fail = getCharInfo(p, end, mblen))) {
       p += *mblen;

From 82fd6424fde64c77f49695883a18f368ba96850e Mon Sep 17 00:00:00 2001
From: Yuriy Chernyshov <thegeorg@yandex-team.ru>
Date: Sat, 12 Feb 2022 14:31:03 +0300
Subject: [PATCH 2/2] More fixes

--- a/src/darts.h
+++ b/src/darts.h
@@ -404,10 +404,10 @@ class DoubleArrayImpl {
     T result;
     set_result(result, -1, 0);
 
-    register array_type_  b = array_[node_pos].base;
-    register array_u_type_ p;
+    array_type_  b = array_[node_pos].base;
+    array_u_type_ p;
 
-    for (register size_t i = 0; i < len; ++i) {
+    for (size_t i = 0; i < len; ++i) {
       p = b +(node_u_type_)(key[i]) + 1;
       if (static_cast<array_u_type_>(b) == array_[p].check)
         b = array_[p].base;
@@ -431,12 +431,12 @@ class DoubleArrayImpl {
                             size_t node_pos = 0) const {
     if (!len) len = length_func_()(key);
 
-    register array_type_  b   = array_[node_pos].base;
-    register size_t     num = 0;
-    register array_type_  n;
-    register array_u_type_ p;
+    array_type_  b   = array_[node_pos].base;
+    size_t     num = 0;
+    array_type_  n;
+    array_u_type_ p;
 
-    for (register size_t i = 0; i < len; ++i) {
+    for (size_t i = 0; i < len; ++i) {
       p = b;  // + 0;
       n = array_[p].base;
       if ((array_u_type_) b == array_[p].check && n < 0) {
@@ -469,8 +469,8 @@ class DoubleArrayImpl {
                       size_t len = 0) const {
     if (!len) len = length_func_()(key);
 
-    register array_type_  b = array_[node_pos].base;
-    register array_u_type_ p;
+    array_type_  b = array_[node_pos].base;
+    array_u_type_ p;
 
     for (; key_pos < len; ++key_pos) {
       p = b +(node_u_type_)(key[key_pos]) + 1;
--- a/src/viterbi.cpp
+++ b/src/viterbi.cpp
@@ -318,11 +318,11 @@ template <bool IsAllPath> bool connect(size_t pos, Node *rnode,
                                        const Connector *connector,
                                        Allocator<Node, Path> *allocator) {
   for (;rnode; rnode = rnode->bnext) {
-    register long best_cost = 2147483647;
+    long best_cost = 2147483647;
     Node* best_node = 0;
     for (Node *lnode = end_node_list[pos]; lnode; lnode = lnode->enext) {
-      register int lcost = connector->cost(lnode, rnode);  // local cost
-      register long cost = lnode->cost + lcost;
+      int lcost = connector->cost(lnode, rnode);  // local cost
+      long cost = lnode->cost + lcost;
 
       if (cost < best_cost) {
         best_node  = lnode;