iconv sync 2/x: FreeBSD SVN 263986
authorJohn Marino <draco@marino.st>
Fri, 3 Jul 2015 21:40:58 +0000 (23:40 +0200)
committerJohn Marino <draco@marino.st>
Sat, 4 Jul 2015 08:19:05 +0000 (10:19 +0200)
- In the libiconv module for ISO 2022, restore the original order of the
  fields of a private struct such that variables of this type are
  initialized correctly.  This fixes conversion from ISO 2022
- In the libiconv module for EUC-TW, replace 2^cs with 1<<cs.  This fixes
  conversion from EUC-TW
- Synchronize iconv code from NetBSD.  In most cases this only updates the
  RCS id because the changes are already there or are NetBSD specific.
  * citris_csmapper.c   : Add a comment
  * citrus_db_factory.c : Remove put16()
  * citrus_iconv.c      : Return EINVAL on error
  * citrus_mapper.c     : Return EINVAL on error
  * citrus_stdenc.c     : Return EINVAL on error
  * citrus_memstream.c  : Fix type of variable
  * citrus_prop.h       : Sync definition of _CITRUS_PROP_HINT_END
  * citrus_mapper_std.c : Plug memory leak

Obtained from: NetBSD

19 files changed:
lib/i18n_module/BIG5/citrus_big5.c
lib/i18n_module/DECHanyu/citrus_dechanyu.c
lib/i18n_module/EUCTW/citrus_euctw.c
lib/i18n_module/ISO2022/citrus_iso2022.c
lib/i18n_module/UES/citrus_ues.c
lib/i18n_module/VIQR/citrus_viqr.c
lib/i18n_module/mapper_std/citrus_mapper_std.c
lib/libc/citrus/citrus_bcs_strtol.c
lib/libc/citrus/citrus_bcs_strtoul.c
lib/libc/citrus/citrus_csmapper.c
lib/libc/citrus/citrus_csmapper.h
lib/libc/citrus/citrus_db_factory.c
lib/libc/citrus/citrus_iconv.c
lib/libc/citrus/citrus_lookup.c
lib/libc/citrus/citrus_mapper.c
lib/libc/citrus/citrus_memstream.c
lib/libc/citrus/citrus_mmap.c
lib/libc/citrus/citrus_prop.h
lib/libc/citrus/citrus_stdenc.c

index d0b3c70..d46b8d2 100644 (file)
@@ -92,8 +92,8 @@ typedef struct {
 
 typedef struct _BIG5Exclude {
        TAILQ_ENTRY(_BIG5Exclude)        entry;
-       wint_t                           end;
        wint_t                           start;
+       wint_t                           end;
 } _BIG5Exclude;
 
 typedef TAILQ_HEAD(_BIG5ExcludeList, _BIG5Exclude) _BIG5ExcludeList;
@@ -356,7 +356,7 @@ _citrus_BIG5_wcrtomb_priv(_BIG5EncodingInfo * __restrict ei,
     size_t n, wchar_t wc, _BIG5State * __restrict psenc __unused,
     size_t * __restrict nresult)
 {
-       unsigned char l;
+       size_t l;
        int ret;
 
        /* check invalid sequence */
index 10ac118..ac45563 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libiconv_modules/DECHanyu/citrus_dechanyu.c 252583 2013-07-03 18:27:45Z peter $ */
-/* $NetBSD: citrus_dechanyu.c,v 1.3 2008/06/14 16:01:07 tnozaki Exp $ */
+/* $FreeBSD: head/lib/libiconv_modules/DECHanyu/citrus_dechanyu.c 281550 2015-04-15 09:09:20Z tijl $ */
+/* $NetBSD: citrus_dechanyu.c,v 1.4 2011/11/19 18:20:13 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2007 Citrus Project,
index 3b4c740..80254d1 100644 (file)
@@ -1,4 +1,4 @@
-/* $FreeBSD: head/lib/libiconv_modules/EUCTW/citrus_euctw.c 252583 2013-07-03 18:27:45Z peter $ */
+/* $FreeBSD: head/lib/libiconv_modules/EUCTW/citrus_euctw.c 281550 2015-04-15 09:09:20Z tijl $ */
 /*     $NetBSD: citrus_euctw.c,v 1.11 2008/06/14 16:01:07 tnozaki Exp $        */
 
 /*-
@@ -119,7 +119,7 @@ _citrus_EUCTW_count(int cs)
        case 1:
                /*FALLTHROUGH*/
        case 2:
-               return (2^cs);
+               return (1 << cs);
        case 3:
                abort();
                /*NOTREACHED*/
index cd9ae41..9338a0c 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libiconv_modules/ISO2022/citrus_iso2022.c 252583 2013-07-03 18:27:45Z peter $ */
-/*     $NetBSD: citrus_iso2022.c,v 1.19 2008/06/14 16:01:07 tnozaki Exp $      */
+/* $FreeBSD: head/lib/libiconv_modules/ISO2022/citrus_iso2022.c 281550 2015-04-15 09:09:20Z tijl $ */
+/*     $NetBSD: citrus_iso2022.c,v 1.20 2010/12/07 22:01:45 joerg Exp $        */
 
 /*-
  * Copyright (c)1999, 2002 Citrus Project,
@@ -78,9 +78,9 @@
 #define CS96MULTI      (3U)
 
 typedef struct {
-       unsigned char    interm;
-       unsigned char    final;
        unsigned char    type;
+       unsigned char    final;
+       unsigned char    interm;
        unsigned char    vers;
 } _ISO2022Charset;
 
index 93b0c50..76f16cb 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libiconv_modules/UES/citrus_ues.c 252583 2013-07-03 18:27:45Z peter $ */
-/* $NetBSD: citrus_ues.c,v 1.1 2006/11/13 15:16:31 tnozaki Exp $ */
+/* $FreeBSD: head/lib/libiconv_modules/UES/citrus_ues.c 281550 2015-04-15 09:09:20Z tijl $ */
+/* $NetBSD: citrus_ues.c,v 1.3 2012/02/12 13:51:29 wiz Exp $ */
 
 /*-
  * Copyright (c)2006 Citrus Project,
index c54e76b..300102c 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libiconv_modules/VIQR/citrus_viqr.c 252583 2013-07-03 18:27:45Z peter $ */
-/* $NetBSD: citrus_viqr.c,v 1.4 2008/06/14 16:01:08 tnozaki Exp $ */
+/* $FreeBSD: head/lib/libiconv_modules/VIQR/citrus_viqr.c 281550 2015-04-15 09:09:20Z tijl $ */
+/* $NetBSD: citrus_viqr.c,v 1.5 2011/11/19 18:20:13 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2006 Citrus Project,
index de14e1e..72de4d7 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libiconv_modules/mapper_std/citrus_mapper_std.c 219019 2011-02-25 00:04:39Z gabor $ */
-/*     $NetBSD: citrus_mapper_std.c,v 1.8 2006/09/11 13:06:33 tnozaki Exp $    */
+/* $FreeBSD: head/lib/libiconv_modules/mapper_std/citrus_mapper_std.c 263986 2014-04-01 10:36:11Z tijl $ */
+/*     $NetBSD: citrus_mapper_std.c,v 1.10 2011/11/19 18:48:39 tnozaki Exp $   */
 
 /*-
  * Copyright (c)2003, 2006 Citrus Project,
@@ -174,8 +174,11 @@ rowcol_parse_variable_compat(struct _citrus_mapper_std_rowcol *rc,
        n = be32toh(rcx->rcx_src_row_end);
        if (m + n > 0) {
                ret = set_linear_zone(lz, m, n);
-               if (ret != 0)
+               if (ret != 0) {
+                       free(rc->rc_src_rowcol);
+                       rc->rc_src_rowcol = NULL;
                        return (ret);
+               }
                ++rc->rc_src_rowcol_len, ++lz;
        }
        m = be32toh(rcx->rcx_src_col_begin);
index e87e929..24df91b 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libc/iconv/citrus_bcs_strtol.c 219019 2011-02-25 00:04:39Z gabor $ */
-/* $NetBSD: citrus_bcs_strtol.c,v 1.2 2009/01/11 02:46:24 christos Exp $ */
+/* $FreeBSD: head/lib/libc/iconv/citrus_bcs_strtol.c 263986 2014-04-01 10:36:11Z tijl $ */
+/* $NetBSD: citrus_bcs_strtol.c,v 1.4 2013/04/26 21:20:47 joerg Exp $ */
 
 /*-
  * Copyright (c) 2005 The DragonFly Project.  All rights reserved.
index 2ed30ed..26c4209 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libc/iconv/citrus_bcs_strtoul.c 219019 2011-02-25 00:04:39Z gabor $ */
-/* $NetBSD: citrus_bcs_strtoul.c,v 1.3 2009/01/11 02:46:24 christos Exp $ */
+/* $FreeBSD: head/lib/libc/iconv/citrus_bcs_strtoul.c 263986 2014-04-01 10:36:11Z tijl $ */
+/* $NetBSD: citrus_bcs_strtoul.c,v 1.5 2013/04/26 21:20:48 joerg Exp $ */
 
 /*-
  * Copyright (c) 2005 The DragonFly Project.  All rights reserved.
index 1a0bdc6..5fee73b 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libc/iconv/citrus_csmapper.c 252584 2013-07-03 18:35:21Z peter $ */
-/* $NetBSD: citrus_csmapper.c,v 1.10 2009/01/11 02:46:24 christos Exp $ */
+/* $FreeBSD: head/lib/libc/iconv/citrus_csmapper.c 263986 2014-04-01 10:36:11Z tijl $ */
+/*     $NetBSD: citrus_csmapper.c,v 1.11 2011/11/20 07:43:52 tnozaki Exp $     */
 
 /*-
  * Copyright (c)2003 Citrus Project,
@@ -140,6 +140,7 @@ find_best_pivot_pvdb(const char *src, const char *dst, char *pivot,
                if (ret)
                        goto quit3;
                if (_db_lookup_by_s(db3, dst, &r2, NULL) != 0)
+                       /* don't break the loop, test all src/dst pairs. */
                        goto quit4;
                /* r2: norm among pivot and dst */
                ret = get32(&r2, &val32);
index d74cc7c..bc18e61 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libc/iconv/citrus_csmapper.h 219019 2011-02-25 00:04:39Z gabor $ */
-/* $NetBSD: citrus_csmapper.h,v 1.2 2008/02/09 14:56:20 junyoung Exp $ */
+/* $FreeBSD: head/lib/libc/iconv/citrus_csmapper.h 263986 2014-04-01 10:36:11Z tijl $ */
+/*     $NetBSD: citrus_csmapper.h,v 1.3 2013/06/24 17:28:35 joerg Exp $        */
 
 /*-
  * Copyright (c)2003 Citrus Project,
index 4088327..be68c7d 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libc/iconv/citrus_db_factory.c 219019 2011-02-25 00:04:39Z gabor $ */
-/* $NetBSD: citrus_db_factory.c,v 1.9 2008/02/09 14:56:20 junyoung Exp $ */
+/* $FreeBSD: head/lib/libc/iconv/citrus_db_factory.c 267437 2014-06-13 08:28:51Z tijl $ */
+/*     $NetBSD: citrus_db_factory.c,v 1.10 2013/09/14 13:05:51 joerg Exp $     */
 
 /*-
  * Copyright (c)2003 Citrus Project,
@@ -227,15 +227,6 @@ put8(struct _region *r, size_t *rofs, uint8_t val)
        *rofs += 1;
 }
 
-static __inline void
-put16(struct _region *r, size_t *rofs, uint16_t val)
-{
-
-       val = htons(val);
-       memcpy(_region_offset(r, *rofs), &val, 2);
-       *rofs += 2;
-}
-
 static __inline void
 put32(struct _region *r, size_t *rofs, uint32_t val)
 {
index 4c2621f..edfea82 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libc/iconv/citrus_iconv.c 254080 2013-08-08 01:53:27Z peter $ */
-/* $NetBSD: citrus_iconv.c,v 1.7 2008/07/25 14:05:25 christos Exp $ */
+/* $FreeBSD: head/lib/libc/iconv/citrus_iconv.c 279404 2015-02-28 20:30:25Z kan $ */
+/*     $NetBSD: citrus_iconv.c,v 1.10 2011/11/19 18:34:21 tnozaki Exp $        */
 
 /*-
  * Copyright (c)2003 Citrus Project,
@@ -169,8 +169,10 @@ open_shared(struct _citrus_iconv_shared * __restrict * __restrict rci,
            ci->ci_ops->io_uninit_shared == NULL ||
            ci->ci_ops->io_init_context == NULL ||
            ci->ci_ops->io_uninit_context == NULL ||
-           ci->ci_ops->io_convert == NULL)
+           ci->ci_ops->io_convert == NULL) {
+               ret = EINVAL;
                goto err;
+       }
 
        /* initialize the converter */
        ret = (*ci->ci_ops->io_init_shared)(ci, src, dst);
index a65b3b0..a2acd58 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libc/iconv/citrus_lookup.c 219019 2011-02-25 00:04:39Z gabor $ */
-/* $NetBSD: citrus_lookup.c,v 1.6 2009/02/03 04:58:38 lukem Exp $ */
+/* $FreeBSD: head/lib/libc/iconv/citrus_lookup.c 263986 2014-04-01 10:36:11Z tijl $ */
+/*     $NetBSD: citrus_lookup.c,v 1.7 2012/05/04 16:45:05 joerg Exp $  */
 
 /*-
  * Copyright (c)2003 Citrus Project,
index eb9f183..eeca89c 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libc/iconv/citrus_mapper.c 252584 2013-07-03 18:35:21Z peter $ */
-/* $NetBSD: citrus_mapper.c,v 1.7 2008/07/25 14:05:25 christos Exp $ */
+/* $FreeBSD: head/lib/libc/iconv/citrus_mapper.c 263986 2014-04-01 10:36:11Z tijl $ */
+/*     $NetBSD: citrus_mapper.c,v 1.10 2012/06/08 07:49:42 martin Exp $        */
 
 /*-
  * Copyright (c)2003 Citrus Project,
@@ -244,8 +244,10 @@ mapper_open(struct _citrus_mapper_area *__restrict ma,
        if (!cm->cm_ops->mo_init ||
            !cm->cm_ops->mo_uninit ||
            !cm->cm_ops->mo_convert ||
-           !cm->cm_ops->mo_init_state)
+           !cm->cm_ops->mo_init_state) {
+               ret = EINVAL;
                goto err;
+       }
 
        /* allocate traits structure */
        cm->cm_traits = malloc(sizeof(*cm->cm_traits));
index f3a20b7..574b838 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libc/iconv/citrus_memstream.c 219019 2011-02-25 00:04:39Z gabor $ */
-/* $NetBSD: citrus_memstream.c,v 1.4 2009/02/03 05:02:12 lukem Exp $ */
+/* $FreeBSD: head/lib/libc/iconv/citrus_memstream.c 263986 2014-04-01 10:36:11Z tijl $ */
+/*     $NetBSD: citrus_memstream.c,v 1.5 2012/03/13 21:13:31 christos Exp $    */
 
 /*-
  * Copyright (c)2003 Citrus Project,
@@ -44,8 +44,7 @@ _citrus_memory_stream_getln(struct _citrus_memory_stream * __restrict ms,
     size_t * __restrict rlen)
 {
        const uint8_t *h, *p;
-       size_t ret;
-       int i;
+       size_t i, ret;
 
        if (ms->ms_pos>=_region_size(&ms->ms_region))
                return (NULL);
index 5da4c25..8b4fd4a 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libc/iconv/citrus_mmap.c 244350 2012-12-17 10:38:51Z jilles $ */
-/* $NetBSD: citrus_mmap.c,v 1.3 2005/01/19 00:52:37 mycroft Exp $ */
+/* $FreeBSD: head/lib/libc/iconv/citrus_mmap.c 263986 2014-04-01 10:36:11Z tijl $ */
+/*     $NetBSD: citrus_mmap.c,v 1.4 2011/10/15 23:00:01 christos Exp $ */
 
 /*-
  * Copyright (c)2003 Citrus Project,
index b343121..79373a6 100644 (file)
@@ -82,7 +82,7 @@ struct _citrus_prop_hint_t {
 #define _CITRUS_PROP_HINT_NUM(name, cb) \
     { name, _CITRUS_PROP_NUM, { .num = { cb } } }
 #define _CITRUS_PROP_HINT_END \
-    { NULL, _CITRUS_PROP_NUM, { .num = { 0 } } }
+    { .name = NULL }
 
 __BEGIN_DECLS
 int     _citrus_prop_parse_variable(const _citrus_prop_hint_t * __restrict,
index 405613d..eb8e760 100644 (file)
@@ -1,5 +1,5 @@
-/* $FreeBSD: head/lib/libc/iconv/citrus_stdenc.c 219019 2011-02-25 00:04:39Z gabor $ */
-/* $NetBSD: citrus_stdenc.c,v 1.3 2005/10/29 18:02:04 tshiozak Exp $ */
+/* $FreeBSD: head/lib/libc/iconv/citrus_stdenc.c 263986 2014-04-01 10:36:11Z tijl $ */
+/*     $NetBSD: citrus_stdenc.c,v 1.4 2011/11/19 18:39:58 tnozaki Exp $        */
 
 /*-
  * Copyright (c)2003 Citrus Project,
@@ -102,8 +102,10 @@ _citrus_stdenc_open(struct _citrus_stdenc * __restrict * __restrict rce,
            ce->ce_ops->eo_cstomb == NULL ||
            ce->ce_ops->eo_mbtowc == NULL ||
            ce->ce_ops->eo_wctomb == NULL ||
-           ce->ce_ops->eo_get_state_desc == NULL)
+           ce->ce_ops->eo_get_state_desc == NULL) {
+               ret = EINVAL;
                goto bad;
+       }
 
        /* allocate traits */
        ce->ce_traits = malloc(sizeof(*ce->ce_traits));