1 /* Test iconv behavior on UCS4 conversions with //IGNORE. 2 Copyright (C) 2020-2022 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, see 17 <http://www.gnu.org/licenses/>. */ 18 19 /* Derived from BZ #26923 */ 20 #include <errno.h> 21 #include <iconv.h> 22 #include <stdio.h> 23 #include <support/check.h> 24 25 static int do_test(void)26do_test (void) 27 { 28 iconv_t cd = iconv_open ("UTF-8//IGNORE", "ISO-10646/UCS4/"); 29 TEST_VERIFY_EXIT (cd != (iconv_t) -1); 30 31 /* 32 * Convert sequence beginning with an irreversible character into buffer that 33 * is too small. 34 */ 35 char input[12] = "\xe1\x80\xa1" "AAAAAAAAA"; 36 char *inptr = input; 37 size_t insize = sizeof (input); 38 char output[6]; 39 char *outptr = output; 40 size_t outsize = sizeof (output); 41 42 TEST_VERIFY (iconv (cd, &inptr, &insize, &outptr, &outsize) == -1); 43 TEST_VERIFY (errno == E2BIG); 44 45 TEST_VERIFY_EXIT (iconv_close (cd) != -1); 46 47 return 0; 48 } 49 50 #include <support/test-driver.c> 51