svn commit: r268945 - in head: lib/libc/stdlib sys/sys

Pedro F. Giffuni pfg at FreeBSD.org
Mon Jul 21 15:45:00 UTC 2014


Author: pfg
Date: Mon Jul 21 15:44:59 2014
New Revision: 268945
URL: http://svnweb.freebsd.org/changeset/base/268945

Log:
  Fix hdestroy() compliance issue.
  
  The hcreate(3) implementation and related functions we inherited
  from NetBSD used to free() the key value, something that is not
  supported by the standard implementation.
  
  This would cause a segmentation fault when attempting to run
  the examples from the opengroup and linux manpages.  NetBSD
  has added non-standard calls to provide the previous
  behaviour but hdestroy is not very commonly used so at this
  time it seems excessive to bring those to FreeBSD.
  
  Bump the __FreeBSD_version as this is an ABI change.
  
  Reference:
  http://bugs.dragonflybsd.org/issues/1398
  
  MFC after:	2 weeks

Modified:
  head/lib/libc/stdlib/hcreate.c
  head/sys/sys/param.h

Modified: head/lib/libc/stdlib/hcreate.c
==============================================================================
--- head/lib/libc/stdlib/hcreate.c	Mon Jul 21 15:26:52 2014	(r268944)
+++ head/lib/libc/stdlib/hcreate.c	Mon Jul 21 15:44:59 2014	(r268945)
@@ -159,7 +159,6 @@ hdestroy_r(struct hsearch_data *head)
 		while (!SLIST_EMPTY(&table[idx])) {
 			ie = SLIST_FIRST(&table[idx]);
 			SLIST_REMOVE_HEAD(&table[idx], link);
-			free(ie->ent.key);
 			free(ie);
 		}
 	}

Modified: head/sys/sys/param.h
==============================================================================
--- head/sys/sys/param.h	Mon Jul 21 15:26:52 2014	(r268944)
+++ head/sys/sys/param.h	Mon Jul 21 15:44:59 2014	(r268945)
@@ -58,7 +58,7 @@
  *		in the range 5 to 9.
  */
 #undef __FreeBSD_version
-#define __FreeBSD_version 1100027	/* Master, propagated to newvers */
+#define __FreeBSD_version 1100028	/* Master, propagated to newvers */
 
 /*
  * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,


More information about the svn-src-all mailing list