From 198d2b82a7a9b0820151363efe19dd79356ab64c Mon Sep 17 00:00:00 2001 From: Arne Goedeke <el@laramies.com> Date: Tue, 21 Apr 2015 19:47:19 +0200 Subject: [PATCH] Thread.Farm: pass exceptions to provide_error In case an exception was thrown, the value of err ended up being the Result object, while the error got lost. --- lib/modules/Thread.pmod | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/modules/Thread.pmod b/lib/modules/Thread.pmod index 8b6688b4cb..915fb34566 100644 --- a/lib/modules/Thread.pmod +++ b/lib/modules/Thread.pmod @@ -539,10 +539,16 @@ optional class Farm { mixed res, err; int st = gethrtime(); - if( err = catch(res = q[1][0]( @q[1][1] )) && q[0]) - ([object]q[0])->provide_error( err ); - else if( q[0] ) - ([object]q[0])->provide( res ); + + err = catch(res = q[1][0]( @q[1][1] )); + + if( q[0] ) + { + if( err ) + ([object]q[0])->provide_error( err ); + else + ([object]q[0])->provide( res ); + } object lock = mutex->lock(); free_threads += ({ this }); lock = 0; -- GitLab