# HG changeset patch # User jwe # Date 778285168 0 # Node ID 9293c023dd2d23e706eda90bd4a9db5b23fbd42f # Parent fdf4ce2d855ea2a08e44b6e0659f80503e55dce7 [project @ 1994-08-30 22:19:28 by jwe] diff --git a/src/pt-exp-base.cc b/src/pt-exp-base.cc --- a/src/pt-exp-base.cc +++ b/src/pt-exp-base.cc @@ -36,6 +36,7 @@ #include #include +#include #include #include #include @@ -487,13 +488,10 @@ { cm (put_row, put_col) = tmp.double_value (); } - else if (tmp.is_string ()) + else if (tmp.is_string () && all_strings && str_ptr) { - if (all_strings && str_ptr) - { - memcpy (str_ptr, tmp.string_value (), nc); - str_ptr += nc; - } + memcpy (str_ptr, tmp.string_value (), nc); + str_ptr += nc; } else if (tmp.is_real_matrix () || tmp.is_range ()) { @@ -503,13 +501,14 @@ { cm (put_row, put_col) = tmp.complex_value (); } - else if (tmp.is_complex_matrix ()) - { - cm.insert (tmp.complex_matrix_value (), put_row, put_col); - } else { - panic_impossible (); + ComplexMatrix cm_tmp = tmp.complex_matrix_value (); + + if (error_state) + goto done; + + cm.insert (cm_tmp, put_row, put_col); } } else @@ -518,21 +517,19 @@ { m (put_row, put_col) = tmp.double_value (); } - else if (tmp.is_string ()) + else if (tmp.is_string () && all_strings && str_ptr) { - if (all_strings && str_ptr) - { - memcpy (str_ptr, tmp.string_value (), nc); - str_ptr += nc; - } - } - else if (tmp.is_real_matrix () || tmp.is_range ()) - { - m.insert (tmp.matrix_value (), put_row, put_col); + memcpy (str_ptr, tmp.string_value (), nc); + str_ptr += nc; } else { - panic_impossible (); + Matrix m_tmp = tmp.matrix_value (); + + if (error_state) + goto done; + + m.insert (m_tmp, put_row, put_col); } }