# HG changeset patch
# User William Stein <wstein@gmail.com>
# Date 1209157761 25200
# Node ID fa5fee03ab8df704612457c7a47cfb6c1982f6e6
# Parent  5322170885081281bdd7b95b309058cffd0477c6
Fix a bug in setting entries of a SPARSE free module element.

diff -r 532217088508 -r fa5fee03ab8d sage/modules/free_module_element.pyx
--- a/sage/modules/free_module_element.pyx	Wed Apr 23 23:59:50 2008 -0700
+++ b/sage/modules/free_module_element.pyx	Fri Apr 25 14:09:21 2008 -0700
@@ -1694,6 +1694,20 @@ cdef class FreeModuleElement_generic_spa
     
     def __setitem__(self, i, value):
         """
+        Set the ith entry of self to value.
+        
+        EXAMPLES:
+            sage: V = VectorSpace(GF(17), 10000000, sparse=True)
+            sage: w = V(0)
+            sage: w[39893] = 20
+            sage: w[39893]
+            3
+            sage: parent(w[39893])
+            Finite Field of size 17
+            sage: w[39893] = sqrt(2)
+            Traceback (most recent call last):
+            ...
+            TypeError: unable to convert x (=sqrt(2)) to an integer
         """
         if not self._is_mutable:
             raise ValueError, "vector is immutable; please change a copy instead (use self.copy())"
@@ -1703,7 +1717,7 @@ cdef class FreeModuleElement_generic_spa
         if i < 0 or i >= self.degree():
             raise IndexError, "index (i=%s) must be between 0 and %s"%(i,
                             self.degree()-1)
-        self.set(i, value)
+        self.set(i, self._parent.base_ring()(value))
            
     def denominator(self):
         R = self.base_ring()
