Decimal.sqrt(0) failed when the context was not
explicitly supplied.
diff --git a/Lib/decimal.py b/Lib/decimal.py
index ebeb6d7..8b3e252 100644
--- a/Lib/decimal.py
+++ b/Lib/decimal.py
@@ -2316,6 +2316,9 @@
 
     def sqrt(self, context=None):
         """Return the square root of self."""
+        if context is None:
+            context = getcontext()
+
         if self._is_special:
             ans = self._check_nans(context=context)
             if ans:
@@ -2329,9 +2332,6 @@
             ans = _dec_from_triple(self._sign, '0', self._exp // 2)
             return ans._fix(context)
 
-        if context is None:
-            context = getcontext()
-
         if self._sign == 1:
             return context._raise_error(InvalidOperation, 'sqrt(-x), x > 0')
 
diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py
index 34fc34a..efaa174 100644
--- a/Lib/test/test_decimal.py
+++ b/Lib/test/test_decimal.py
@@ -1192,6 +1192,12 @@
         d = d1.max(d2)
         self.assertTrue(type(d) is Decimal)
 
+    def test_implicit_context(self):
+        # Check results when context given implicitly.  (Issue 2478)
+        c = getcontext()
+        self.assertEqual(str(Decimal(0).sqrt()),
+                         str(c.sqrt(Decimal(0))))
+
 
 class DecimalPythonAPItests(unittest.TestCase):