projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add a GPL copyright notice.
[gnulib.git]
/
lib
/
localcharset.c
diff --git
a/lib/localcharset.c
b/lib/localcharset.c
index
5b146e7
..
66099d5
100644
(file)
--- a/
lib/localcharset.c
+++ b/
lib/localcharset.c
@@
-1,6
+1,6
@@
/* Determine a canonical name for the current locale's character encoding.
/* Determine a canonical name for the current locale's character encoding.
- Copyright (C) 2000-200
3
Free Software Foundation, Inc.
+ Copyright (C) 2000-200
4
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
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
# 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
# define ISSLASH(C) ((C) == '/' || (C) == '\\')
#endif
@@
-140,15
+140,17
@@
get_charset_aliases ()
else
{
/* Parse the file's contents. */
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;
char *res_ptr = NULL;
size_t res_size = 0;
- size_t l1, l2;
for (;;)
{
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;
c = getc (fp);
if (c == EOF)
break;
@@
-169,6
+171,7
@@
get_charset_aliases ()
break;
l1 = strlen (buf1);
l2 = strlen (buf2);
break;
l1 = strlen (buf1);
l2 = strlen (buf2);
+ old_res_ptr = res_ptr;
if (res_size == 0)
{
res_size = l1 + 1 + l2 + 1;
if (res_size == 0)
{
res_size = l1 + 1 + l2 + 1;
@@
-183,6
+186,8
@@
get_charset_aliases ()
{
/* Out of memory. */
res_size = 0;
{
/* 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);
break;
}
strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);