yann@402
|
1 |
Workaround for buglet in std::vector etc. when compiling
|
yann@402
|
2 |
with gcc-4.0.0 -Wall -O -fno-exceptions
|
yann@402
|
3 |
Fixes:
|
yann@402
|
4 |
|
yann@402
|
5 |
.../include/c++/4.0.0/bits/vector.tcc: In member function 'void std::vector<_Tp,
|
yann@402
|
6 |
_Alloc>::reserve(size_t) [with _Tp = int, _Alloc = std::allocator<int>]':
|
yann@402
|
7 |
.../include/c++/4.0.0/bits/vector.tcc:78: warning: control may reach end of
|
yann@402
|
8 |
non-void function 'typename _Alloc::pointer std::vector<_Tp,
|
yann@402
|
9 |
_Alloc>::_M_allocate_and_copy(size_t, _ForwardIterator, _ForwardIterator) [with
|
yann@402
|
10 |
_ForwardIterator = int*, _Tp = int, _Alloc = std::allocator<int>]' being inlined
|
yann@402
|
11 |
|
yann@402
|
12 |
See http://gcc.gnu.org/PR21951
|
yann@402
|
13 |
|
yann@402
|
14 |
--- gcc-4.0.1-20050607/libstdc++-v3/include/bits/stl_vector.h.old 2005-06-11 03:58:20.000000000 -0700
|
yann@402
|
15 |
+++ gcc-4.0.1-20050607/libstdc++-v3/include/bits/stl_vector.h 2005-06-11 04:01:21.000000000 -0700
|
yann@402
|
16 |
@@ -765,13 +765,13 @@
|
yann@402
|
17 |
{
|
yann@402
|
18 |
std::__uninitialized_copy_a(__first, __last, __result,
|
yann@402
|
19 |
this->get_allocator());
|
yann@402
|
20 |
- return __result;
|
yann@402
|
21 |
}
|
yann@402
|
22 |
catch(...)
|
yann@402
|
23 |
{
|
yann@402
|
24 |
_M_deallocate(__result, __n);
|
yann@402
|
25 |
__throw_exception_again;
|
yann@402
|
26 |
}
|
yann@402
|
27 |
+ return __result;
|
yann@402
|
28 |
}
|
yann@402
|
29 |
|
yann@402
|
30 |
|
yann@402
|
31 |
--- gcc-4.0.1-20050607/libstdc++-v3/include/bits/stl_uninitialized.h.old 2005-06-11 03:58:20.000000000 -0700
|
yann@402
|
32 |
+++ gcc-4.0.1-20050607/libstdc++-v3/include/bits/stl_uninitialized.h 2005-06-11 04:05:18.990003248 -0700
|
yann@402
|
33 |
@@ -84,13 +84,13 @@
|
yann@402
|
34 |
{
|
yann@402
|
35 |
for (; __first != __last; ++__first, ++__cur)
|
yann@402
|
36 |
std::_Construct(&*__cur, *__first);
|
yann@402
|
37 |
- return __cur;
|
yann@402
|
38 |
}
|
yann@402
|
39 |
catch(...)
|
yann@402
|
40 |
{
|
yann@402
|
41 |
std::_Destroy(__result, __cur);
|
yann@402
|
42 |
__throw_exception_again;
|
yann@402
|
43 |
}
|
yann@402
|
44 |
+ return __cur;
|
yann@402
|
45 |
}
|
yann@402
|
46 |
|
yann@402
|
47 |
/**
|
yann@402
|
48 |
@@ -236,13 +236,13 @@
|
yann@402
|
49 |
{
|
yann@402
|
50 |
for (; __first != __last; ++__first, ++__cur)
|
yann@402
|
51 |
__alloc.construct(&*__cur, *__first);
|
yann@402
|
52 |
- return __cur;
|
yann@402
|
53 |
}
|
yann@402
|
54 |
catch(...)
|
yann@402
|
55 |
{
|
yann@402
|
56 |
std::_Destroy(__result, __cur, __alloc);
|
yann@402
|
57 |
__throw_exception_again;
|
yann@402
|
58 |
}
|
yann@402
|
59 |
+ return __cur;
|
yann@402
|
60 |
}
|
yann@402
|
61 |
|
yann@402
|
62 |
template<typename _InputIterator, typename _ForwardIterator, typename _Tp>
|
yann@402
|
63 |
@@ -337,11 +337,13 @@
|
yann@402
|
64 |
{
|
yann@402
|
65 |
return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc);
|
yann@402
|
66 |
}
|
yann@402
|
67 |
+#ifdef __EXCEPTIONS // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only
|
yann@402
|
68 |
catch(...)
|
yann@402
|
69 |
{
|
yann@402
|
70 |
std::_Destroy(__result, __mid, __alloc);
|
yann@402
|
71 |
__throw_exception_again;
|
yann@402
|
72 |
}
|
yann@402
|
73 |
+#endif
|
yann@402
|
74 |
}
|
yann@402
|
75 |
|
yann@402
|
76 |
// __uninitialized_fill_copy
|
yann@402
|
77 |
@@ -360,11 +362,13 @@
|
yann@402
|
78 |
{
|
yann@402
|
79 |
return std::__uninitialized_copy_a(__first, __last, __mid, __alloc);
|
yann@402
|
80 |
}
|
yann@402
|
81 |
+#ifdef __EXCEPTIONS // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only
|
yann@402
|
82 |
catch(...)
|
yann@402
|
83 |
{
|
yann@402
|
84 |
std::_Destroy(__result, __mid, __alloc);
|
yann@402
|
85 |
__throw_exception_again;
|
yann@402
|
86 |
}
|
yann@402
|
87 |
+#endif
|
yann@402
|
88 |
}
|
yann@402
|
89 |
|
yann@402
|
90 |
// __uninitialized_copy_fill
|
yann@402
|
91 |
--- gcc-4.0.1-20050607/libstdc++-v3/include/ext/rope.old 2005-06-11 03:58:20.000000000 -0700
|
yann@402
|
92 |
+++ gcc-4.0.1-20050607/libstdc++-v3/include/ext/rope 2005-06-11 04:13:26.628870872 -0700
|
yann@402
|
93 |
@@ -1645,11 +1645,13 @@
|
yann@402
|
94 |
_S_cond_store_eos(__buf[__size]);
|
yann@402
|
95 |
try
|
yann@402
|
96 |
{ return _S_new_RopeLeaf(__buf, __size, __a); }
|
yann@402
|
97 |
+#ifdef __EXCEPTIONS // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only
|
yann@402
|
98 |
catch(...)
|
yann@402
|
99 |
{
|
yann@402
|
100 |
_RopeRep::__STL_FREE_STRING(__buf, __size, __a);
|
yann@402
|
101 |
__throw_exception_again;
|
yann@402
|
102 |
}
|
yann@402
|
103 |
+#endif
|
yann@402
|
104 |
}
|
yann@402
|
105 |
|
yann@402
|
106 |
// Concatenation of nonempty strings.
|
yann@402
|
107 |
--- gcc-4.0.1-20050607/libstdc++-v3/include/ext/memory.old 2005-06-11 03:58:20.000000000 -0700
|
yann@402
|
108 |
+++ gcc-4.0.1-20050607/libstdc++-v3/include/ext/memory 2005-06-11 04:13:52.897877376 -0700
|
yann@402
|
109 |
@@ -85,11 +85,13 @@
|
yann@402
|
110 |
std::_Construct(&*__cur, *__first);
|
yann@402
|
111 |
return pair<_InputIter, _ForwardIter>(__first, __cur);
|
yann@402
|
112 |
}
|
yann@402
|
113 |
+#ifdef __EXCEPTIONS // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only
|
yann@402
|
114 |
catch(...)
|
yann@402
|
115 |
{
|
yann@402
|
116 |
std::_Destroy(__result, __cur);
|
yann@402
|
117 |
__throw_exception_again;
|
yann@402
|
118 |
}
|
yann@402
|
119 |
+#endif
|
yann@402
|
120 |
}
|
yann@402
|
121 |
|
yann@402
|
122 |
template<typename _RandomAccessIter, typename _Size, typename _ForwardIter>
|
yann@402
|
123 |
@@ -144,11 +146,13 @@
|
yann@402
|
124 |
__alloc.construct(&*__cur, *__first);
|
yann@402
|
125 |
return pair<_InputIter, _ForwardIter>(__first, __cur);
|
yann@402
|
126 |
}
|
yann@402
|
127 |
+#ifdef __EXCEPTIONS // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only
|
yann@402
|
128 |
catch(...)
|
yann@402
|
129 |
{
|
yann@402
|
130 |
std::_Destroy(__result, __cur, __alloc);
|
yann@402
|
131 |
__throw_exception_again;
|
yann@402
|
132 |
}
|
yann@402
|
133 |
+#endif
|
yann@402
|
134 |
}
|
yann@402
|
135 |
|
yann@402
|
136 |
template<typename _InputIter, typename _Size, typename _ForwardIter,
|
yann@402
|
137 |
--- gcc-4.0.1-20050607/libstdc++-v3/include/ext/hashtable.h.old 2005-06-11 03:58:20.000000000 -0700
|
yann@402
|
138 |
+++ gcc-4.0.1-20050607/libstdc++-v3/include/ext/hashtable.h 2005-06-11 04:14:28.384482592 -0700
|
yann@402
|
139 |
@@ -607,13 +607,13 @@
|
yann@402
|
140 |
try
|
yann@402
|
141 |
{
|
yann@402
|
142 |
this->get_allocator().construct(&__n->_M_val, __obj);
|
yann@402
|
143 |
- return __n;
|
yann@402
|
144 |
}
|
yann@402
|
145 |
catch(...)
|
yann@402
|
146 |
{
|
yann@402
|
147 |
_M_put_node(__n);
|
yann@402
|
148 |
__throw_exception_again;
|
yann@402
|
149 |
}
|
yann@402
|
150 |
+ return __n;
|
yann@402
|
151 |
}
|
yann@402
|
152 |
|
yann@402
|
153 |
void
|