Ticket #9319: 9319.patch

File 9319.patch, 2.0 KB (added by viboes, 9 years ago)

Please, could you see if this patch fixes the issue?

  • future.hpp

     
    981981          virtual void execute(boost::unique_lock<boost::mutex>& lck) {
    982982            try
    983983            {
    984               this->mark_finished_with_result_internal(func_(), lck);
     984              Fp local_fuct=boost::move(func_);
     985              relocker relock(lck);
     986              Rp res = local_fuct();
     987              relock.lock();
     988              this->mark_finished_with_result_internal(boost::move(res), lck);
    985989            }
    986990            catch (...)
    987991            {
     
    10301034          virtual void execute(boost::unique_lock<boost::mutex>& lck) {
    10311035            try
    10321036            {
    1033               func_();
     1037              Fp local_fuct=boost::move(func_);
     1038              relocker relock(lck);
     1039              local_fuct();
     1040              relock.lock();
    10341041              this->mark_finished_with_result_internal(lck);
    10351042            }
    10361043            catch (...)
     
    41334140      virtual void execute(boost::unique_lock<boost::mutex>& lck) {
    41344141        try
    41354142        {
    4136           this->mark_finished_with_result_internal(continuation(boost::move(parent)), lck);
     4143          Fp local_fuct=boost::move(continuation);
     4144          F ftmp = boost::move(parent);
     4145          relocker relock(lck);
     4146          Rp res = local_fuct(boost::move(ftmp));
     4147          relock.lock();
     4148          this->mark_finished_with_result_internal(boost::move(res), lck);
    41374149        }
    41384150        catch (...)
    41394151        {
     
    41654177      virtual void execute(boost::unique_lock<boost::mutex>& lck) {
    41664178        try
    41674179        {
    4168           continuation(boost::move(parent));
     4180          Fp local_fuct=boost::move(continuation);
     4181          F ftmp = boost::move(parent);
     4182          relocker relock(lck);
     4183          local_fuct(boost::move(ftmp));
     4184          relock.lock();
    41694185          this->mark_finished_with_result_internal(lck);
    41704186        }
    41714187        catch (...)