Commit 4edf58aa006816a7adcd3858fabc9893b75db49c

Authored by Jürgen Knödlseder
1 parent 089f4f79

Prevent unintentional deallocation in GFitsTable::set (#2340)

Showing 1 changed file with 5 additions and 2 deletions
src/fits/GFitsTable.cpp
... ... @@ -338,8 +338,11 @@ GFitsTableCol* GFitsTable::set(const int& colnum, const GFitsTableCol& column)
338 338 throw GException::out_of_range(G_SET1, "Column number", colnum, ncols());
339 339 }
340 340  
341   - // Free existing column
342   - if (m_columns[colnum] != NULL) delete m_columns[colnum];
  341 + // Free existing column only if it differs from current column. This
  342 + // prevents unintential deallocation of the argument
  343 + if ((m_columns[colnum] != NULL) && (m_columns[colnum] != &column)) {
  344 + delete m_columns[colnum];
  345 + }
343 346  
344 347 // Clone column
345 348 m_columns[colnum] = column.clone();
... ...