wok-next view icu/stuff/patches/icu4c-58.2-fix_enumeration-1.patch @ rev 19765

Up icu, libboost...
author Aleksej Bobylev <al.bobylev@gmail.com>
date Mon Jun 12 11:39:09 2017 +0300 (2017-06-12)
parents
children
line source
1 Submitted By: Pierre Labastie <pierre dot labastie at neuf dot fr>
2 Date: 2016-11-15
3 Initial Package Version: 58.1
4 Upstream Status: Applied
5 Origin: Upstream, rediffed so that patch -p1 works.
6 Description: Fix a regression in 58.1, which made mozilla applications
7 segfault. See ticket #8527
9 diff -Naur icu.old/source/common/ulist.c icu.new/source/common/ulist.c
10 --- icu.old/source/common/ulist.c 2016-06-15 20:58:17.000000000 +0200
11 +++ icu.new/source/common/ulist.c 2016-11-15 16:11:09.996596933 +0100
12 @@ -29,7 +29,6 @@
13 UListNode *tail;
15 int32_t size;
16 - int32_t currentIndex;
17 };
19 static void ulist_addFirstItem(UList *list, UListNode *newItem);
20 @@ -51,7 +50,6 @@
21 newList->head = NULL;
22 newList->tail = NULL;
23 newList->size = 0;
24 - newList->currentIndex = -1;
26 return newList;
27 }
28 @@ -80,8 +78,9 @@
29 } else {
30 p->next->previous = p->previous;
31 }
32 - list->curr = NULL;
33 - list->currentIndex = 0;
34 + if (p == list->curr) {
35 + list->curr = p->next;
36 + }
37 --list->size;
38 if (p->forceDelete) {
39 uprv_free(p->data);
40 @@ -150,7 +149,6 @@
41 newItem->next = list->head;
42 list->head->previous = newItem;
43 list->head = newItem;
44 - list->currentIndex++;
45 }
47 list->size++;
48 @@ -193,7 +191,6 @@
50 curr = list->curr;
51 list->curr = curr->next;
52 - list->currentIndex++;
54 return curr->data;
55 }
56 @@ -209,7 +206,6 @@
57 U_CAPI void U_EXPORT2 ulist_resetList(UList *list) {
58 if (list != NULL) {
59 list->curr = list->head;
60 - list->currentIndex = 0;
61 }
62 }
64 @@ -272,4 +268,3 @@
65 U_CAPI UList * U_EXPORT2 ulist_getListFromEnum(UEnumeration *en) {
66 return (UList *)(en->context);
67 }
68 -
69 diff -Naur icu.old/source/i18n/ucol_res.cpp icu.new/source/i18n/ucol_res.cpp
70 --- icu.old/source/i18n/ucol_res.cpp 2016-09-28 04:26:02.000000000 +0200
71 +++ icu.new/source/i18n/ucol_res.cpp 2016-11-15 16:11:10.000596933 +0100
72 @@ -680,6 +680,7 @@
73 return NULL;
74 }
75 memcpy(en, &defaultKeywordValues, sizeof(UEnumeration));
76 + ulist_resetList(sink.values); // Initialize the iterator.
77 en->context = sink.values;
78 sink.values = NULL; // Avoid deletion in the sink destructor.
79 return en;