Author: tijl
Date: Fri Jun 13 08:36:10 2014
New Revision: 267438
URL: http://svnweb.freebsd.org/changeset/base/267438

Log:
  iconv_open: initialise ci_ilseq_invalid field of _citrus_iconv_shared
  struct after allocation with malloc.
  
  iconvlist: reduce a memory leak by copying strings only once.

Modified:
  head/lib/libc/iconv/bsd_iconv.c

Modified: head/lib/libc/iconv/bsd_iconv.c
==============================================================================
--- head/lib/libc/iconv/bsd_iconv.c     Fri Jun 13 08:28:51 2014        
(r267437)
+++ head/lib/libc/iconv/bsd_iconv.c     Fri Jun 13 08:36:10 2014        
(r267438)
@@ -83,6 +83,7 @@ __bsd___iconv_open(const char *out, cons
        }
 
        handle->cv_shared->ci_discard_ilseq = strcasestr(out, "//IGNORE");
+       handle->cv_shared->ci_ilseq_invalid = false;
        handle->cv_shared->ci_hooks = NULL;
 
        return ((iconv_t)(void *)handle);
@@ -223,7 +224,7 @@ __bsd_iconvlist(int (*do_one) (unsigned 
                        return;
                }
                strlcpy(curkey, list[i], slashpos - list[i] + 1);
-               names[j++] = strdup(curkey);
+               names[j++] = curkey;
                for (; (i < sz) && (memcmp(curkey, list[i], strlen(curkey)) == 
0); i++) {
                        slashpos = strchr(list[i], '/');
                        curitem = (char *)malloc(strlen(slashpos) + 1);
@@ -235,7 +236,7 @@ __bsd_iconvlist(int (*do_one) (unsigned 
                        if (strcmp(curkey, curitem) == 0) {
                                continue;
                        }
-                       names[j++] = strdup(curitem);
+                       names[j++] = curitem;
                }
                np = (const char * const *)names;
                do_one(j, np, data);
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to