Index: gclient_utils.py |
diff --git a/gclient_utils.py b/gclient_utils.py |
index b2b009314036ea3e8fb5910e27c78d78966eeb7c..07a8aeba7a31ac9df49f2ed42b6acc9b94b090fd 100644 |
--- a/gclient_utils.py |
+++ b/gclient_utils.py |
@@ -471,8 +471,10 @@ class ExecutionQueue(object): |
self.ready_cond.release() |
assert not self.running, 'Now guaranteed to be single-threaded' |
if self.exceptions: |
- # TODO(maruel): Get back the original stack location. |
- raise self.exceptions.pop(0) |
+ # To get back the stack location correctly, the raise a, b, c form must be |
+ # used, passing a tuple as the first argument doesn't work. |
+ e = self.exceptions.pop(0) |
+ raise e[0], e[1], e[2] |
if self.progress: |
self.progress.end() |
@@ -491,9 +493,9 @@ class ExecutionQueue(object): |
exception = None |
try: |
self.item.run(*self.args, **self.kwargs) |
- except Exception, e: |
- # TODO(maruel): Catch exception location. |
- exception = e |
+ except Exception: |
+ # Catch exception location. |
+ exception = sys.exc_info() |
# This assumes the following code won't throw an exception. Bad. |
self.parent.ready_cond.acquire() |