diff options
author | Jim Meyering <jim@meyering.net> | 2004-05-21 07:44:35 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2004-05-21 07:44:35 +0000 |
commit | 29cb8457bcaa1c01eace1e94b06ed572f3520547 (patch) | |
tree | d95820b4ae52e151b0b8d36175e31a8957b86070 /lib | |
parent | da45f1948ef6a2f1f8b7f27507c6169c972edcbc (diff) | |
download | coreutils-29cb8457bcaa1c01eace1e94b06ed572f3520547.tar.xz |
update from gnulib
Diffstat (limited to 'lib')
-rw-r--r-- | lib/localcharset.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/lib/localcharset.c b/lib/localcharset.c index 5b146e795..66099d5e3 100644 --- a/lib/localcharset.c +++ b/lib/localcharset.c @@ -1,6 +1,6 @@ /* Determine a canonical name for the current locale's character encoding. - Copyright (C) 2000-2003 Free Software Foundation, Inc. + Copyright (C) 2000-2004 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -72,8 +72,8 @@ # define relocate(pathname) (pathname) #endif -#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ - /* Win32, OS/2, DOS */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS */ # define ISSLASH(C) ((C) == '/' || (C) == '\\') #endif @@ -140,15 +140,17 @@ get_charset_aliases () else { /* Parse the file's contents. */ - int c; - char buf1[50+1]; - char buf2[50+1]; char *res_ptr = NULL; size_t res_size = 0; - size_t l1, l2; for (;;) { + int c; + char buf1[50+1]; + char buf2[50+1]; + size_t l1, l2; + char *old_res_ptr; + c = getc (fp); if (c == EOF) break; @@ -169,6 +171,7 @@ get_charset_aliases () break; l1 = strlen (buf1); l2 = strlen (buf2); + old_res_ptr = res_ptr; if (res_size == 0) { res_size = l1 + 1 + l2 + 1; @@ -183,6 +186,8 @@ get_charset_aliases () { /* Out of memory. */ res_size = 0; + if (old_res_ptr != NULL) + free (old_res_ptr); break; } strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1); |