2005-12-03 Ulrich Drepper <drepper@redhat.com>
+ * nis/nis_table.c (nis_list): Optimize freeing and reallocation of
+ result record.
+
* nis/nss_nisplus/nisplus-network.c (_nss_nisplus_getnetbyaddr_r):
Better sized buffers. Correct error case handling.
* nis/nis_error.c (nis_sperror_r): Let snprintf determine whether
ibreq->ibr_srch.ibr_srch_val =
NIS_RES_OBJECT (res)->LI_data.li_attrs.li_attrs_val;
}
+ /* The following is a non-obvious optimization. A
+ nis_freeresult call would call xdr_free as the
+ following code. But it also would unnecessarily
+ free the result structure. We avoid this here
+ along with the necessary tests. */
+#if 1
+ xdr_free ((xdrproc_t) _xdr_nis_result, (char *)res);
+ memset (res, '\0', sizeof (*res));
+#else
nis_freeresult (res);
res = calloc (1, sizeof (nis_result));
if (res == NULL)
nis_free_directory (dir);
return NULL;
}
+#endif
first_try = 1; /* Try at first the old binding */
goto again;
}