Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
[BZ #9793]
2009-02-02 Ulrich Drepper <drepper@redhat.com> [BZ #9793] * iconv/gconv_trans.c (__gconv_transliterate): Don't change *OUTBUFSTART unless the whole output fit into the buffer. * iconv/Makefile (tests): Add tst-iconv4. * iconv/tst-iconv4.c: New file.
- Loading branch information
Ulrich Drepper
committed
Feb 3, 2009
1 parent
ebc2241
commit 1b14353
Showing
4 changed files
with
80 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
// Derived from BZ #9793 | ||
#include <errno.h> | ||
#include <iconv.h> | ||
#include <stdio.h> | ||
|
||
|
||
static int | ||
do_test (void) | ||
{ | ||
iconv_t cd = iconv_open ("ASCII//TRANSLIT", "UTF-8"); | ||
if (cd == (iconv_t) -1) | ||
{ | ||
puts ("iconv_open failed"); | ||
return 1; | ||
} | ||
|
||
char input[2] = { 0xc2, 0xae }; /* Registered trademark */ | ||
char *inptr = input; | ||
size_t insize = sizeof (input); | ||
char output[2]; /* Too short to contain "(R)". */ | ||
char *outptr = output; | ||
size_t outsize = sizeof (output); | ||
|
||
size_t ret = iconv (cd, &inptr, &insize, &outptr, &outsize); | ||
if (ret != (size_t) -1) | ||
{ | ||
puts ("iconv succeeded"); | ||
return 1; | ||
} | ||
if (errno != E2BIG) | ||
{ | ||
puts ("iconv did not set errno to E2BIG"); | ||
return 1; | ||
} | ||
int res = 0; | ||
if (inptr != input) | ||
{ | ||
puts ("inptr changed"); | ||
res = 1; | ||
} | ||
if (insize != sizeof (input)) | ||
{ | ||
puts ("insize changed"); | ||
res = 1; | ||
} | ||
if (outptr != output) | ||
{ | ||
puts ("outptr changed"); | ||
res = 1; | ||
} | ||
if (outsize != sizeof (output)) | ||
{ | ||
puts ("outsize changed"); | ||
res = 1; | ||
} | ||
if (iconv_close (cd) == -1) | ||
{ | ||
puts ("iconv_close failed"); | ||
res = 1; | ||
} | ||
return res; | ||
} | ||
|
||
#define TEST_FUNCTION do_test () | ||
#include "../test-skeleton.c" |