Print this page
7126 NSS_XbyY_FINI has too much logic for a function-like macro

@@ -667,18 +667,17 @@
         (str)->returnval = 0,                           \
         (str)->returnlen = 0,                           \
         (str)->h_errno    = 0,                          \
         (str)->erange    = 0)
 
-#define NSS_XbyY_FINI(str)                              (\
-        (str)->returnval == 0 && (str)->erange && (errno = ERANGE), \
-        (str)->returnval)
+#define NSS_XbyY_FINI(str)      _nss_XbyY_fini(str)
 
 #define NSS_PACKED_CRED_CHECK(buf, ruid, euid)          (\
         ((nss_pheader_t *)(buf))->p_ruid == (ruid) && \
         ((nss_pheader_t *)(buf))->p_euid == (euid))
 
+extern void             *_nss_XbyY_fini(nss_XbyY_args_t *);
 extern char             **_nss_netdb_aliases(const char *, int, char *, int);
 extern nss_status_t     nss_default_key2str(void *, size_t, nss_XbyY_args_t *,
                                         const char *, int, size_t *);
 extern nss_status_t     nss_packed_arg_init(void *, size_t, nss_db_root_t *,
                                         nss_db_initf_t *, int *,