~vcs-imports/libiconv/trunk

« back to all changes in this revision

Viewing changes to lib/utf16.h

  • Committer: Bruno Haible
  • Date: 2024-12-15 12:23:08 UTC
  • Revision ID: git-v1:8d618a87265040dc882b451e39c6a39e610395be
Prepare for version 1.18.

* configure.ac: Bump version number to 1.18.
* include/iconv.h.in (_LIBICONV_VERSION): Likewise.
* lib/Makefile.in (LIBICONV_VERSION_INFO): Bump to 9:0:7.
* src/iconv.c (print_version): Update copyright year.
* windows/iconv.rc: Likewise.
* windows/libiconv.rc: Likewise.
* README: Update download link.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc.
 
2
 * Copyright (C) 1999-2024 Free Software Foundation, Inc.
3
3
 * This file is part of the GNU LIBICONV Library.
4
4
 *
5
5
 * The GNU LIBICONV Library is free software; you can redistribute it
33
33
static int
34
34
utf16_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
35
35
{
36
 
  state_t state = conv->istate;
 
36
  state_t state = conv->ibyteorder;
37
37
  int count = 0;
38
38
  for (; n >= 2 && count <= RET_COUNT_MAX && count <= INT_MAX-2;) {
39
39
    ucs4_t wc = (state ? s[0] + (s[1] << 8) : (s[0] << 8) + s[1]);
46
46
        if (!(wc2 >= 0xdc00 && wc2 < 0xe000))
47
47
          goto ilseq;
48
48
        *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00);
49
 
        conv->istate = state;
 
49
        conv->ibyteorder = state;
50
50
        return count+4;
51
51
      } else
52
52
        break;
54
54
      goto ilseq;
55
55
    } else {
56
56
      *pwc = wc;
57
 
      conv->istate = state;
 
57
      conv->ibyteorder = state;
58
58
      return count+2;
59
59
    }
60
60
    s += 2; n -= 2; count += 2;
61
61
  }
62
 
  conv->istate = state;
 
62
  conv->ibyteorder = state;
63
63
  return RET_TOOFEW(count);
64
64
 
65
65
ilseq:
66
 
  conv->istate = state;
 
66
  conv->ibyteorder = state;
67
67
  return RET_SHIFT_ILSEQ(count);
68
68
}
69
69