View | Details | Raw Unified | Return to bug 215393 | Differences between
and this patch

Collapse All | Expand All

(-)devel/boost-libs/files/patch-libs_locale_src_encoding_iconv_codepage.ipp (+15 lines)
Line 0 Link Here
1
--- libs/locale/src/encoding/iconv_codepage.ipp.orig	2017-09-02 09:56:14 UTC
2
+++ libs/locale/src/encoding/iconv_codepage.ipp
3
@@ -44,6 +44,12 @@ class iconverter_base { (public)
4
     {
5
         close();
6
         cvt_ = iconv_open(to,from);
7
+#if defined(ICONV_SET_ILSEQ_INVALID) && defined(__FreeBSD__)
8
+        if(cvt_ != (iconv_t)(-1)) {
9
+            int ilseq_invalid = 1;
10
+            iconvctl(cvt_,ICONV_SET_ILSEQ_INVALID,&ilseq_invalid);
11
+        }
12
+#endif
13
         how_ = how;
14
         return cvt_ != (iconv_t)(-1);
15
     }
(-)devel/boost-libs/files/patch-libs_locale_src_posix_codecvt.cpp (+26 lines)
Line 0 Link Here
1
--- libs/locale/src/posix/codecvt.cpp.orig	2017-09-02 09:56:14 UTC
2
+++ libs/locale/src/posix/codecvt.cpp
3
@@ -42,6 +42,10 @@ namespace impl_posix {
4
                 if(d == (iconv_t)(-1)) {
5
                     throw std::runtime_error("Unsupported encoding" + encoding);
6
                 }
7
+#if defined(ICONV_SET_ILSEQ_INVALID) && defined(__FreeBSD__)
8
+                int ilseq_invalid = 1;
9
+                iconvctl(d,ICONV_SET_ILSEQ_INVALID,&ilseq_invalid);
10
+#endif
11
                 for(unsigned c=0;c<256;c++) {
12
                     char ibuf[2] = { char(c) , 0 };
13
                     char *in = ibuf;
14
@@ -187,6 +191,12 @@ namespace impl_posix {
15
             if(d!=(iconv_t)(-1))
16
                 return;
17
             d=iconv_open(to,from);
18
+#if defined(ICONV_SET_ILSEQ_INVALID) && defined(__FreeBSD__)
19
+            if(d != (iconv_t)(-1)) {
20
+                int ilseq_invalid = 1;
21
+                iconvctl(d,ICONV_SET_ILSEQ_INVALID,&ilseq_invalid);
22
+            }
23
+#endif
24
         }
25
 
26
         static char const *utf32_encoding()
(-)devel/boost-libs/files/patch-libs_locale_src_util_iconv.hpp (+39 lines)
Line 0 Link Here
1
--- libs/locale/src/util/iconv.hpp.orig	2017-09-02 09:56:14 UTC
2
+++ libs/locale/src/util/iconv.hpp
3
@@ -12,27 +12,7 @@
4
 
5
 namespace boost {
6
     namespace locale {
7
-#if defined(__ICONV_F_HIDE_INVALID) && defined(__FreeBSD__)
8
         extern "C" {
9
-            typedef size_t (*const_iconv_ptr_type)(iconv_t d,char const **in,size_t *insize,char **out,size_t *outsize,uint32_t,size_t *);
10
-            typedef size_t (*nonconst_iconv_ptr_type)(iconv_t d,char **in,size_t *insize,char **out,size_t *outsize,uint32_t,size_t *);
11
-        }
12
-        inline size_t do_iconv(const_iconv_ptr_type ptr,iconv_t d,char **in,size_t *insize,char **out,size_t *outsize)
13
-        {
14
-            char const **rin = const_cast<char const **>(in);
15
-            return ptr(d,rin,insize,out,outsize,__ICONV_F_HIDE_INVALID,0);
16
-        }
17
-        inline size_t do_iconv(nonconst_iconv_ptr_type ptr,iconv_t d,char **in,size_t *insize,char **out,size_t *outsize)
18
-        {
19
-            return ptr(d,in,insize,out,outsize,__ICONV_F_HIDE_INVALID,0);
20
-        }
21
-        inline size_t call_iconv(iconv_t d,char **in,size_t *insize,char **out,size_t *outsize)
22
-        {
23
-            char const **rin = const_cast<char const **>(in);
24
-            return do_iconv(__iconv, d, in,insize,out,outsize);
25
-        }
26
-#else
27
-        extern "C" {
28
             typedef size_t (*gnu_iconv_ptr_type)(iconv_t d,char const **in,size_t *insize,char **out,size_t *outsize);
29
             typedef size_t (*posix_iconv_ptr_type)(iconv_t d,char **in,size_t *insize,char **out,size_t *outsize);
30
         }
31
@@ -49,8 +29,6 @@ namespace boost {
32
         {
33
             return do_iconv( iconv, d, in,insize,out,outsize);
34
         }
35
-#endif
36
-
37
     } // locale 
38
 } // boost
39
 

Return to bug 215393