--- loncom/interface/spreadsheet/Spreadsheet.pm	2005/05/15 04:49:42	1.49
+++ loncom/interface/spreadsheet/Spreadsheet.pm	2005/05/17 20:17:03	1.51
@@ -1,5 +1,5 @@
 #
-# $Id: Spreadsheet.pm,v 1.49 2005/05/15 04:49:42 albertel Exp $
+# $Id: Spreadsheet.pm,v 1.51 2005/05/17 20:17:03 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -127,6 +127,7 @@ sub new {
     };
     #
     bless($self,$class);
+    $self->filename($filename);
     #
     return $self;
 }
@@ -972,7 +973,6 @@ sub formulas {
 	if (!$self->{'loaded'}) {
 	    $self->{'loaded'}=1;
 	    # Load in the spreadsheet definition
-	    $self->filename($filename);
 	    if (exists($env{'form.workcopy'}) && 
 		$self->{'type'} eq $env{'form.workcopy'}) {
 		$self->load_tmp();
@@ -1615,7 +1615,11 @@ sub load {
     my ($formulas);
     if (exists($spreadsheets{$cachekey})) {
         $formulas = $spreadsheets{$cachekey}->{'formulas'};
-    } else {
+	$self->formulas($formulas);
+        $self->{'row_source'}=$spreadsheets{$cachekey}->{'row_source'};
+        $self->{'row_numbers'}=$spreadsheets{$cachekey}->{'row_numbers'};
+        $self->{'maxrow'}=$spreadsheets{$cachekey}->{'maxrow'};
+   } else {
         # Not cached, need to read
         if (! defined($filename)) {
             $formulas = $self->load_system_default_sheet();
@@ -1651,10 +1655,13 @@ sub load {
         $filename=$self->filename(); # filename may have changed
         $cachekey = join('_',($cnum,$cdom,$stype,$filename));
         %{$spreadsheets{$cachekey}->{'formulas'}} = %{$formulas};
+	$self->formulas($formulas);
+	$self->set_row_sources();
+	$self->set_row_numbers();
+	%{$spreadsheets{$cachekey}->{'row_source'}} = %{$self->{'row_source'}};
+        %{$spreadsheets{$cachekey}->{'row_numbers'}} = %{$self->{'row_numbers'}};
+        $spreadsheets{$cachekey}->{'maxrow'} = $self->{'maxrow'};
     }
-    $self->formulas($formulas);
-    $self->set_row_sources();
-    $self->set_row_numbers();
 }
 
 sub set_row_sources {