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)); }