Add back stack location to gclient exceptions.

Needed to use the special 3 args raise notation.

Review URL: http://codereview.chromium.org/3164014

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@56209 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/gclient_utils.py b/gclient_utils.py
index b2b0093..07a8aeb 100644
--- a/gclient_utils.py
+++ b/gclient_utils.py
@@ -471,8 +471,10 @@
       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 @@
       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()