about summary refs log tree commit diff
path: root/iconv/gconv_open.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-07-17 22:09:30 +0000
committerUlrich Drepper <drepper@redhat.com>2000-07-17 22:09:30 +0000
commit8114530a31e03aec4085f79971c2a3b9e940eae3 (patch)
treeb0b003fab3e4416cb3c35281827a377365a04e34 /iconv/gconv_open.c
parent7f53da19c11c141d4d4d24417b3a72bbaf755d2c (diff)
downloadglibc-8114530a31e03aec4085f79971c2a3b9e940eae3.tar.gz
glibc-8114530a31e03aec4085f79971c2a3b9e940eae3.tar.xz
glibc-8114530a31e03aec4085f79971c2a3b9e940eae3.zip
Update.
2000-07-17  Bruno Haible  <haible@clisp.cons.org>

	* iconv/gconv_open.c (__gconv_open): Initialize the __data
	field of struct __gconv_trans_data differently.  Don't pass NULL to
	trans_init_fct.  Simplify list append operation.

2000-07-14  Bruno Haible  <haible@clisp.cons.org>

	* intl/dcigettext.c (dcigettext): Call plural_eval on all platforms,
	not only those having tsearch.

2000-07-17  Ulrich Drepper  <drepper@redhat.com>

	* locale/langinfo.h: Add placeholder values in enum for removed
	LC_CTYPE entries.

2000-07-17  Jakub Jelinek  <jakub@redhat.com>

	* elf/dl-addr.c (_dl_addr): Keep searching in the _dl_loaded
	chain if the PHDR check fails.

2000-07-17  Mark Kettenis  <kettenis@gnu.org>

	* nss/getent.c (print_hosts): Make sure we always print a space
	between numeric addresses and hostnames.

2000-07-17  Wolfram Gloger  <wg@malloc.de>

	* malloc/malloc.c (chunk_alloc): Use mmap_chunk() only if allowed,
	i.e. if n_mmaps_max>0.

2000-07-16  Mark Kettenis  <kettenis@gnu.org>

	* resolv/netdb.h (AI_V4MAPPED, AI_ALL, AI_ADDRCONFIG): Adjust
	values to remove possible clash with other AI_* constants.
	(AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST): Define as
	hexadecimal constants to stress the fact they're in fact
	bit flags.

2000-07-15  Mark Kettenis  <kettenis@gnu.org>

	* nss/getXXent_r.c [NEED__RES]: Include <resolv.h>.
	(SETFUNC_NAME, ENDFUNC_NAME, REENTRANT_GETNAME): Use res_ninit
	instead of res_init.
Diffstat (limited to 'iconv/gconv_open.c')
-rw-r--r--iconv/gconv_open.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/iconv/gconv_open.c b/iconv/gconv_open.c
index bbe732c88a..842bf73566 100644
--- a/iconv/gconv_open.c
+++ b/iconv/gconv_open.c
@@ -212,13 +212,13 @@ __gconv_open (const char *toset, const char *fromset, __gconv_t *handle,
 
 		      /* Match!  Now try the initializer.  */
 		      if (runp->trans_init_fct == NULL
-			  || (runp->trans_init_fct (data, steps[cnt].__to_name)
+			  || (runp->trans_init_fct (&data,
+						    steps[cnt].__to_name)
 			      == __GCONV_OK))
 			{
 			  /* Append at the end of the list.  */
 			  struct __gconv_trans_data *newp;
-			  struct __gconv_trans_data *endp;
-			  struct __gconv_trans_data *lastp;
+			  struct __gconv_trans_data **lastp;
 
 			  newp = (struct __gconv_trans_data *)
 			    malloc (sizeof (struct __gconv_trans_data));
@@ -228,18 +228,14 @@ __gconv_open (const char *toset, const char *fromset, __gconv_t *handle,
 			  newp->__trans_fct = runp->trans_fct;
 			  newp->__trans_context_fct = runp->trans_context_fct;
 			  newp->__trans_end_fct = runp->trans_end_fct;
-			  newp->__data = NULL;
+			  newp->__data = data;
 			  newp->__next = NULL;
 
-			  lastp = NULL;
-			  for (endp = result->__data[cnt].__trans;
-			       endp != NULL; endp = endp->__next)
-			    lastp = endp;
+			  lastp = &result->__data[cnt].__trans;
+			  while (*lastp != NULL)
+			    lastp = &(*lastp)->__next;
 
-			  if (lastp == NULL)
-			    result->__data[cnt].__trans = newp;
-			  else
-			    lastp->__next = newp;
+			  *lastp = newp;
 			}
 		      break;
 		    }