Print this page
cleanup
*** 227,237 ****
}
dmp->dm_len = reslen;
}
if (prefixlen > 0)
! (void) strlcpy(dmp->dm_buf, name, prefixlen);
if (res != NULL) {
(void) strlcat(dmp->dm_buf, res, dmp->dm_len);
mdb_dem_free(res, strlen(res) + 1);
}
--- 227,239 ----
}
dmp->dm_len = reslen;
}
if (prefixlen > 0)
! (void) strlcpy(dmp->dm_buf, name, prefixlen + 1);
! else
! *dmp->dm_buf = '\0';
if (res != NULL) {
(void) strlcat(dmp->dm_buf, res, dmp->dm_len);
mdb_dem_free(res, strlen(res) + 1);
}
*** 325,334 ****
--- 327,342 ----
cmd_demstr(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
{
if ((flags & DCMD_ADDRSPEC) || argc == 0)
return (DCMD_USAGE);
+ if (mdb.m_demangler == NULL && (mdb.m_demangler =
+ mdb_dem_load()) == NULL) {
+ mdb_warn("failed to load demangler");
+ return (DCMD_ERR);
+ }
+
for (; argc != 0; argc--, argv++) {
mdb_printf("%s == %s\n", argv->a_un.a_str,
mdb_dem_convert(mdb.m_demangler, argv->a_un.a_str));
}