diff --git a/libr/anal/xrefs.c b/libr/anal/xrefs.c index 10da10c0b7..9d6f085e85 100644 --- a/libr/anal/xrefs.c +++ b/libr/anal/xrefs.c @@ -29,14 +29,25 @@ static void XREFKEY(char * const key, const size_t key_len, } R_API int r_anal_xrefs_load(RAnal *anal, const char *prjfile) { - char *path, *db = r_str_newf (R2_HOMEDIR"/projects/%s.d", prjfile); + char *path, *db = r_str_newf (R2_HOMEDIR"/projects/%s.d", prjfile); + ut8 found = 0; + SdbListIter *it; + SdbNs *ns; if (!db) return R_FALSE; path = r_str_home (db); if (!path) { free (db); return R_FALSE; } - sdb_free (DB); + + ls_foreach (anal->sdb->ns, it, ns){ + if (ns->sdb == DB){ + ls_delete (anal->sdb->ns, it); + found = 1; + break; + } + } + if (!found) sdb_free (DB); DB = sdb_new (path, "xrefs", 0); if (!DB) { free (db);