diff -r 4bc0783f6064 -r 72ce76fa37fb usr/src/lib/libidmap/common/idmap_api.c --- a/usr/src/lib/libidmap/common/idmap_api.c Wed May 09 15:05:14 2012 -0700 +++ b/usr/src/lib/libidmap/common/idmap_api.c Thu May 03 05:27:43 2012 -0500 @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright Milan Jurik 2012. All rights reserved. */ @@ -65,17 +66,6 @@ itera->limit = 1024;\ itera->arg = argu; - -#define __ITER_ERR_RETURN(itera, argu, xdr_argu, iretcod)\ - if (argu) {\ - xdr_free(xdr_argu, (caddr_t)argu);\ - free(argu);\ - }\ - if (itera)\ - free(itera);\ - return (iretcod); - - #define __ITER_CHECK(itera, ityp)\ if (itera == NULL) {\ errno = EINVAL;\ @@ -606,8 +596,14 @@ return (IDMAP_SUCCESS); errout: - __ITER_ERR_RETURN(tmpiter, arg, - xdr_idmap_list_namerules_1_argument, retcode); + if (arg) { + xdr_free(xdr_idmap_list_namerules_1_argument, (char *)arg); + free(arg); + } + if (tmpiter) + free(tmpiter); + + return (retcode); }