Skip to content

Commit cd210a7

Browse files
author
fooDayuyu@gmail.com
committed
v1.0.20.4: Fix mismatched master/releases tree crash & disabled auto-load default artist action
1 parent a9c85a5 commit cd210a7

File tree

5 files changed

+20
-9
lines changed

5 files changed

+20
-9
lines changed

find_artist_list.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,9 @@ void CArtistList::Default_Action() {
368368
// * CONVEY ARTIST-LIST
369369

370370
CFindReleaseDialog* dlg = static_cast<CFindReleaseDialog*>(m_host);
371-
dlg->convey_artist_list_selection(updRelSrc::ArtistList);
371+
cupdRelSrc upd(updRelSrc::ArtistList);
372+
upd.extended = true;
373+
dlg->convey_artist_list_selection(upd);
372374
}
373375

374376
// CListControlOwnerData overrides

find_release_dialog.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -605,7 +605,7 @@ void CFindReleaseDialog::on_get_artist_done(cupdRelSrc updsrc, Artist_ptr& artis
605605

606606
m_alist.on_get_artist_done(updsrc, artist);
607607

608-
if (m_dctree.Get_Artist().get() && atoi(m_dctree.Get_Artist()->id) == atoi(artist->id)) {
608+
if (m_dctree.Get_Size() && m_dctree.Get_Artist().get() && atoi(m_dctree.Get_Artist()->id) == atoi(artist->id)) {
609609
return;
610610
}
611611

@@ -614,12 +614,12 @@ void CFindReleaseDialog::on_get_artist_done(cupdRelSrc updsrc, Artist_ptr& artis
614614
cupdsrc.extended |= ol::full_cache() && conf.auto_rel_load_on_select;
615615
}
616616
if (cupdsrc.oninit || cupdsrc == updRelSrc::ArtistList || (!cupdsrc.oninit && cupdsrc == updRelSrc::ArtistProfile && cupdsrc.extended)) {
617-
m_dctree.on_get_artist_done(cupdsrc, artist);
618617

619-
if (conf.auto_rel_load_on_open) {
620-
if (updsrc == updRelSrc::UndefFast && m_dctree.Get_Size() && m_tracer.has_master()) {
618+
m_dctree.on_get_artist_done(cupdsrc, artist);
621619

622-
m_dctree.OnInitExpand(mounted_param(m_tracer.master_i, ~0, true, false).lparam());
620+
if (conf.auto_rel_load_on_open || cupdsrc.extended) {
621+
if ((cupdsrc == updRelSrc::ArtistList || updsrc == updRelSrc::UndefFast) && m_dctree.Get_Size() && m_tracer.has_master()) {
622+
m_dctree.OnInitExpand(mounted_param(m_tracer.master_i, ~0, true, false).lparam());
623623
}
624624
}
625625
}

find_release_tree.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -513,18 +513,25 @@ void CFindReleaseTree::init_tracker_i(Artist_ptr artist, pfc::string8 filter_mas
513513
}
514514
for (size_t j = 0; j < artist->master_releases[master_ndx]->sub_releases.size(); j++) {
515515
Release_ptr r_p = artist->master_releases[master_ndx]->sub_releases[j];
516-
if (filtered)
516+
if (filtered) {
517517
matches_release = !stricmp_utf8(r_p->title, filter_release);
518+
}
518519

519520
if (matches_release && atoi(artist->master_releases[master_ndx]->sub_releases[j]->id) == m_idtracer_p->release_id) {
521+
bool bmaster_fault = m_idtracer_p->master_i != master_ndx;
522+
if (bmaster_fault) {
523+
pfc::string8 logmsg = "Error: Master/Release mismatch";
524+
log_msg(logmsg);
525+
}
520526
m_idtracer_p->release_i = mounted_param(master_ndx, j, true, true);
521527
m_idtracer_p->release_pos = pos + j;
522-
if (!m_idtracer_p->master_tag) {
528+
if (!m_idtracer_p->master_tag || bmaster_fault) {
523529
m_idtracer_p->master_i = master_ndx;
524530
m_idtracer_p->master_pos = pos;
525531
m_idtracer_p->master_tag = true;
526532
}
527533
release_done = true;
534+
break;
528535
}
529536
}
530537
}

foo_discogs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ class cupdRelSrc {
111111
friend bool operator == (const cupdRelSrc& lhs, const updRelSrc& rhs);
112112
// implicit conversion
113113
operator updRelSrc() const { return src; }
114+
// implicit conversion fun param
115+
updRelSrc operator ()() const { return src; }
114116

115117
bool extended;
116118
bool oninit;

version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#define COMPONENT_VERSION_MAJOR 1
66
#define COMPONENT_VERSION_MINOR 0
77
#define COMPONENT_VERSION_PATCH 20
8-
#define COMPONENT_VERSION_SUB_PATCH 3
8+
#define COMPONENT_VERSION_SUB_PATCH 4
99

1010
#define SIM_VA_MA_BETA
1111
#define FIX_VER

0 commit comments

Comments
 (0)