summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2013-03-25 10:45:28 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2013-03-25 10:45:28 +0800
commit3de10dfb8e1e55a1d3403414c2d1abcecb0c0b33 (patch)
treecadec6dd4b004cd1f265b8278cc4b1d6dcb13d49
parent503715fd0f5ed1b34a5c40574a13286ba9e1acac (diff)
downloadpttbbs-3de10dfb8e1e55a1d3403414c2d1abcecb0c0b33.tar
pttbbs-3de10dfb8e1e55a1d3403414c2d1abcecb0c0b33.tar.gz
pttbbs-3de10dfb8e1e55a1d3403414c2d1abcecb0c0b33.tar.bz2
pttbbs-3de10dfb8e1e55a1d3403414c2d1abcecb0c0b33.tar.lz
pttbbs-3de10dfb8e1e55a1d3403414c2d1abcecb0c0b33.tar.xz
pttbbs-3de10dfb8e1e55a1d3403414c2d1abcecb0c0b33.tar.zst
pttbbs-3de10dfb8e1e55a1d3403414c2d1abcecb0c0b33.zip
angel: fix last_assigned_master calculation.
git-svn-id: http://opensvn.csie.org/pttbbs/trunk@5823 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--pttbbs/daemon/angelbeats/angelbeats.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/pttbbs/daemon/angelbeats/angelbeats.c b/pttbbs/daemon/angelbeats/angelbeats.c
index 1971fa59..82e9f1fb 100644
--- a/pttbbs/daemon/angelbeats/angelbeats.c
+++ b/pttbbs/daemon/angelbeats/angelbeats.c
@@ -413,12 +413,6 @@ init_angel_list_callback(void *ctx GCC_UNUSED, int uidx, userec_t *u) {
if (!u->myangel[0])
return 0;
- // skip inactive users. however, this makes the counter
- // incorrect when those kind of use goes online.
- // anyway that should not be a big change...
- if (time4(0) > u->timeplayangel + ANGELBEATS_INACTIVE_TIME )
- return 0;
-
kanade = angel_list_find_by_userid(u->myangel);
if (!kanade) {
// valid angel?
@@ -429,14 +423,22 @@ init_angel_list_callback(void *ctx GCC_UNUSED, int uidx, userec_t *u) {
kanade = angel_list_add(xuser.userid, anum);
}
- // found an angel?
- if (kanade) {
- kanade->masters++;
- if (u->timesetangel > kanade->last_assigned) {
- kanade->last_assigned = u->timesetangel;
- kanade->last_assigned_master = unum;
- }
+ if (!kanade)
+ return 0;
+
+ // Update now (before skipping user) in case the master never called angel.
+ if (u->timesetangel > kanade->last_assigned) {
+ kanade->last_assigned = u->timesetangel;
+ kanade->last_assigned_master = unum;
}
+
+ // skip inactive users. however, this makes the counter
+ // incorrect when those kind of use goes online.
+ // anyway that should not be a big change...
+ if (time4(0) > u->timeplayangel + ANGELBEATS_INACTIVE_TIME )
+ return 0;
+
+ kanade->masters++;
return 1;
}