Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Jul 2014 20:22:45 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        "Pedro F. Giffuni" <pfg@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r268945 - in head: lib/libc/stdlib sys/sys
Message-ID:  <20140723172245.GJ93733@kib.kiev.ua>
In-Reply-To: <201407211544.s6LFixKa093406@svn.freebsd.org>
References:  <201407211544.s6LFixKa093406@svn.freebsd.org>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
On Mon, Jul 21, 2014 at 03:44:59PM +0000, Pedro F. Giffuni wrote:
> 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,
You broke the ABI.  This is absolute stopper for the symversioned
fundamental library.

The right thing to do is to introduce a new version of hcreate() for FBSD_1.4,
and provide compat shims with the old behaviour for FBSD_1.0.

[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBAgAGBQJTz+9kAAoJEJDCuSvBvK1BqFgP/1/mkMihsHfv5MLaU8jcTTdn
x0T+tvMWSvnwSuGINHPaabBNjxCqUSmWtCqOOUXSGB/yWs8el93hRC5i6JoRdgPr
z4RxEAtPW9F9P5ahKNIDdgBFi6WaxSlAWUJlz+mgXJMCSUcGkxANP3vW/zxcP9u3
PUG44pqv3BV7gM+0nxoqZkUEwh7a3fCzYO/jqYElonmIhpUJ+Dig1irXQ+AyDywD
6HEIMHgvobVrD7wr+Eb0y5MhVpznwGWOZzvbex7QWATt2Az7Sb72pmypDRiMG35Z
AojAIOrGSQLOSv11t6rv++ksK9xEREjCHLDe+Sn6p1hnnDmn3CVWsKx8fNLF5yjp
aa7P+j+3et5rgyeK9ZbD9BKZFXXGmo82f6wTFHPGNBnNHfFZtUSr1jjj8Z3hEF14
Q/hAtRZ2MTH7BYjJtCHxKYiJSgrvPvtJePX2fl9E2KSYpHY51xl4seb+OFMcn8V5
2DbQGryyiy6j/H1fQ9bVsjkgziXIQrSuTZkaVJKxCqrAG98UYLNsNaM+OSFsHjbV
k8fkVCrfYj7IXRRflvXVxdallsM7rv4Hp9ZiLnolCjbQt5egx3PAfffsKe20Idei
yKAOARPIHjEEwXzC+pHodwpf+SLiBExfxTS/0z3iF3DxdBMrIaoivgDGeFcC6Ggf
Dh+qZhVj4h1GDabvac24
=BmN1
-----END PGP SIGNATURE-----
help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140723172245.GJ93733>