From 12a8bdc59042a4f55d5ddf2bfbdd725265e5451e Mon Sep 17 00:00:00 2001 From: Peter Conrad Date: Tue, 10 Apr 2018 21:59:51 +0200 Subject: [PATCH] Fixes --- libraries/chain/affiliate_payout.cpp | 7 ++++++- .../chain/include/graphene/chain/affiliate_payout.hpp | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libraries/chain/affiliate_payout.cpp b/libraries/chain/affiliate_payout.cpp index 9dd5ae4b..dac51760 100644 --- a/libraries/chain/affiliate_payout.cpp +++ b/libraries/chain/affiliate_payout.cpp @@ -58,12 +58,16 @@ namespace graphene { namespace chain { FC_ASSERT( share < remaining ); payout *= share; payout /= remaining; + //ilog("Paying ${p} of ${P} for ${s} of ${r}", ("p",payout.to_uint64())("P",to_pay.value)("s",share)("r",remaining) ); remaining -= share; } FC_ASSERT( payout.to_uint64() <= to_pay ); if( payout > 0 ) { - accumulator[affiliate] += asset( payout.to_uint64(), amount.asset_id ); + if ( accumulator.find(affiliate) == accumulator.end() ) + accumulator[affiliate] = asset( payout.to_uint64(), amount.asset_id ); + else + accumulator[affiliate] += asset( payout.to_uint64(), amount.asset_id ); to_pay -= payout.to_uint64(); paid += payout.to_uint64(); } @@ -82,6 +86,7 @@ namespace graphene { namespace chain { _db.adjust_balance( entry.first, entry.second ); _db.push_applied_operation( affiliate_payout_operation( entry.first, tag, entry.second ) ); } + accumulator.clear(); } } } // graphene::chain diff --git a/libraries/chain/include/graphene/chain/affiliate_payout.hpp b/libraries/chain/include/graphene/chain/affiliate_payout.hpp index 8558e2ec..2a58861a 100644 --- a/libraries/chain/include/graphene/chain/affiliate_payout.hpp +++ b/libraries/chain/include/graphene/chain/affiliate_payout.hpp @@ -59,7 +59,7 @@ namespace graphene { namespace chain { public: template affiliate_payout_helper( database& db, const GAME& game ) - : tag( get_tag_for_game( game ) ), _db(db) {} + : _db(db), tag( get_tag_for_game( game ) ) {} share_type payout( account_id_type player, const asset& amount ); share_type payout( const account_object& player, const asset& amount );