# HG changeset patch # User David Bateman # Date 1307041028 25200 # Node ID c0d102ad9bba26e797aa71c26a8fc9d9183f0f31 # Parent 53c0ed961de83fb617e6af5ab077d8d7b876b8c7 Fix loading of objects in MAT-files (bug #32641). * ls-mat5.cc: Fix loading of objects in MAT-files (bug #32641). diff -r 53c0ed961de8 -r c0d102ad9bba src/ls-mat5.cc --- a/src/ls-mat5.cc Wed May 25 15:52:00 2011 -0700 +++ b/src/ls-mat5.cc Thu Jun 02 11:57:08 2011 -0700 @@ -1225,21 +1225,29 @@ else { octave_class* cls = new octave_class (m, classname); - cls->reconstruct_exemplar (); - - if (! cls->reconstruct_parents ()) - warning ("load: unable to reconstruct object inheritance"); - - tc = cls; - if (load_path::find_method (classname, "loadobj") != - std::string()) + + if (cls->reconstruct_exemplar ()) { - octave_value_list tmp = feval ("loadobj", tc, 1); - - if (! error_state) - tc = tmp(0); - else - goto data_read_error; + + if (! cls->reconstruct_parents ()) + warning ("load: unable to reconstruct object inheritance"); + + tc = cls; + if (load_path::find_method (classname, "loadobj") != + std::string()) + { + octave_value_list tmp = feval ("loadobj", tc, 1); + + if (! error_state) + tc = tmp(0); + else + goto data_read_error; + } + } + else + { + tc = m; + warning ("load: element has been converted to a structure"); } } }