diff src/pt-indir.cc @ 2948:56be458e237f

[project @ 1997-05-09 13:37:35 by jwe]
author jwe
date Fri, 09 May 1997 13:51:06 +0000
parents 5ed088015839
children dfffbf305468
line wrap: on
line diff
--- a/src/pt-indir.cc	Fri May 09 13:32:52 1997 +0000
+++ b/src/pt-indir.cc	Fri May 09 13:51:06 1997 +0000
@@ -164,33 +164,26 @@
   return retval;
 }
 
-octave_value&
+octave_variable_reference
 tree_indirect_ref::reference (void)
 {
   if (is_identifier_only ())
     return id->reference ();
   else
     {
+      octave_variable_reference tmp;
+
       if (id)
-	{
-	  octave_value& tmp = id->reference ();
-	  if (tmp.is_undefined () || ! tmp.is_map ())
-	    tmp = Octave_map ();
-	  return tmp.struct_elt_ref (nm);
-	}
+	tmp = id->reference ();
       else if (indir)
-	{
-	  octave_value& tmp = indir->reference ();
-	  if (tmp.is_undefined () || ! tmp.is_map ())
-	    tmp = Octave_map ();
-	  return tmp.struct_elt_ref (nm);
-	}
+	tmp = indir->reference ();
       else
-	{
-	  static octave_value foo;
-	  panic_impossible ();
-	  return foo;
-	}
+	panic_impossible ();
+
+      if (tmp.is_undefined ())
+	tmp.define (Octave_map ());
+
+      return tmp.struct_elt_ref (nm);
     }
 }