Commit | Line | Data |
---|---|---|
d8b5a597 VM |
1 | source: http://bugs.icu-project.org/trac/changeset/39484/\r |
2 | \r | |
3 | \r | |
4 | Index: icu/common/ulist.c\r | |
5 | ===================================================================\r | |
6 | --- icu/common/ulist.c (revision 39483)\r | |
7 | +++ icu/common/ulist.c (revision 39484)\r | |
8 | @@ -30,5 +30,4 @@\r | |
9 | \r | |
10 | int32_t size;\r | |
11 | - int32_t currentIndex;\r | |
12 | };\r | |
13 | \r | |
14 | @@ -52,5 +51,4 @@\r | |
15 | newList->tail = NULL;\r | |
16 | newList->size = 0;\r | |
17 | - newList->currentIndex = -1;\r | |
18 | \r | |
19 | return newList;\r | |
20 | @@ -81,6 +79,7 @@\r | |
21 | p->next->previous = p->previous;\r | |
22 | }\r | |
23 | - list->curr = NULL;\r | |
24 | - list->currentIndex = 0;\r | |
25 | + if (p == list->curr) {\r | |
26 | + list->curr = p->next;\r | |
27 | + }\r | |
28 | --list->size;\r | |
29 | if (p->forceDelete) {\r | |
30 | @@ -151,5 +150,4 @@\r | |
31 | list->head->previous = newItem;\r | |
32 | list->head = newItem;\r | |
33 | - list->currentIndex++;\r | |
34 | }\r | |
35 | \r | |
36 | @@ -194,5 +192,4 @@\r | |
37 | curr = list->curr;\r | |
38 | list->curr = curr->next;\r | |
39 | - list->currentIndex++;\r | |
40 | \r | |
41 | return curr->data;\r | |
42 | @@ -210,5 +207,4 @@\r | |
43 | if (list != NULL) {\r | |
44 | list->curr = list->head;\r | |
45 | - list->currentIndex = 0;\r | |
46 | }\r | |
47 | }\r | |
48 | @@ -273,3 +269,2 @@\r | |
49 | return (UList *)(en->context);\r | |
50 | }\r | |
51 | -\r | |
52 | Index: icu/i18n/ucol_res.cpp\r | |
53 | ===================================================================\r | |
54 | --- icu/i18n/ucol_res.cpp (revision 39483)\r | |
55 | +++ icu/i18n/ucol_res.cpp (revision 39484)\r | |
56 | @@ -681,4 +681,5 @@\r | |
57 | }\r | |
58 | memcpy(en, &defaultKeywordValues, sizeof(UEnumeration));\r | |
59 | + ulist_resetList(sink.values); // Initialize the iterator.\r | |
60 | en->context = sink.values;\r | |
61 | sink.values = NULL; // Avoid deletion in the sink destructor.\r | |
62 | Index: icu/test/intltest/apicoll.cpp\r | |
63 | ===================================================================\r | |
64 | --- icu/test/intltest/apicoll.cpp (revision 39483)\r | |
65 | +++ icu/test/intltest/apicoll.cpp (revision 39484)\r | |
66 | @@ -82,14 +82,7 @@\r | |
67 | col = Collator::createInstance(Locale::getEnglish(), success);\r | |
68 | if (U_FAILURE(success)){\r | |
69 | - errcheckln(success, "Default Collator creation failed. - %s", u_errorName(success));\r | |
70 | - return;\r | |
71 | - }\r | |
72 | -\r | |
73 | - StringEnumeration* kwEnum = col->getKeywordValuesForLocale("", Locale::getEnglish(),true,success);\r | |
74 | - if (U_FAILURE(success)){\r | |
75 | - errcheckln(success, "Get Keyword Values for Locale failed. - %s", u_errorName(success));\r | |
76 | - return;\r | |
77 | - }\r | |
78 | - delete kwEnum;\r | |
79 | + errcheckln(success, "English Collator creation failed. - %s", u_errorName(success));\r | |
80 | + return;\r | |
81 | + }\r | |
82 | \r | |
83 | col->getVersion(versionArray);\r | |
84 | @@ -230,4 +223,27 @@\r | |
85 | delete aFrCol;\r | |
86 | delete junk;\r | |
87 | +}\r | |
88 | +\r | |
89 | +void CollationAPITest::TestKeywordValues() {\r | |
90 | + IcuTestErrorCode errorCode(*this, "TestKeywordValues");\r | |
91 | + LocalPointer<Collator> col(Collator::createInstance(Locale::getEnglish(), errorCode));\r | |
92 | + if (errorCode.logIfFailureAndReset("English Collator creation failed")) {\r | |
93 | + return;\r | |
94 | + }\r | |
95 | +\r | |
96 | + LocalPointer<StringEnumeration> kwEnum(\r | |
97 | + col->getKeywordValuesForLocale("collation", Locale::getEnglish(), TRUE, errorCode));\r | |
98 | + if (errorCode.logIfFailureAndReset("Get Keyword Values for English Collator failed")) {\r | |
99 | + return;\r | |
100 | + }\r | |
101 | + assertTrue("expect at least one collation tailoring for English", kwEnum->count(errorCode) > 0);\r | |
102 | + const char *kw;\r | |
103 | + UBool hasStandard = FALSE;\r | |
104 | + while ((kw = kwEnum->next(NULL, errorCode)) != NULL) {\r | |
105 | + if (strcmp(kw, "standard") == 0) {\r | |
106 | + hasStandard = TRUE;\r | |
107 | + }\r | |
108 | + }\r | |
109 | + assertTrue("expect at least the 'standard' collation tailoring for English", hasStandard);\r | |
110 | }\r | |
111 | \r | |
112 | @@ -2467,4 +2483,5 @@\r | |
113 | TESTCASE_AUTO_BEGIN;\r | |
114 | TESTCASE_AUTO(TestProperty);\r | |
115 | + TESTCASE_AUTO(TestKeywordValues);\r | |
116 | TESTCASE_AUTO(TestOperators);\r | |
117 | TESTCASE_AUTO(TestDuplicate);\r | |
118 | Index: icu/test/intltest/apicoll.h\r | |
119 | ===================================================================\r | |
120 | --- icu/test/intltest/apicoll.h (revision 39483)\r | |
121 | +++ icu/test/intltest/apicoll.h (revision 39484)\r | |
122 | @@ -36,4 +36,5 @@\r | |
123 | */\r | |
124 | void TestProperty(/* char* par */);\r | |
125 | + void TestKeywordValues();\r | |
126 | \r | |
127 | /**\r |