COIN-OR::LEMON - Graph Library

Changeset 295:7c796c1cf1b0 in lemon for lemon/lgf_reader.h


Ignore:
Timestamp:
10/05/08 21:09:01 (11 years ago)
Author:
Balazs Dezso <deba@…>
Branch:
default
Phase:
public
Message:

Fix memory leak hazard

If the constructor throws an exception, it should deallocate each
dynamically allocated memory.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/lgf_reader.h

    r294 r295  
    518518        _use_nodes(false), _use_arcs(false),
    519519        _skip_nodes(false), _skip_arcs(false) {
    520       if (!(*_is)) throw IoError("Cannot open file", fn);
     520      if (!(*_is)) {
     521        delete _is;
     522        throw IoError("Cannot open file", fn);
     523      }
    521524    }
    522525
     
    530533        _use_nodes(false), _use_arcs(false),
    531534        _skip_nodes(false), _skip_arcs(false) {
    532       if (!(*_is)) throw IoError("Cannot open file", fn);
     535      if (!(*_is)) {
     536        delete _is;
     537        throw IoError("Cannot open file", fn);
     538      }
    533539    }
    534540
     
    13091315        _use_nodes(false), _use_edges(false),
    13101316        _skip_nodes(false), _skip_edges(false) {
    1311       if (!(*_is)) throw IoError("Cannot open file", fn);
     1317      if (!(*_is)) {
     1318        delete _is;
     1319        throw IoError("Cannot open file", fn);
     1320      }
    13121321    }
    13131322
     
    13211330        _use_nodes(false), _use_edges(false),
    13221331        _skip_nodes(false), _skip_edges(false) {
    1323       if (!(*_is)) throw IoError("Cannot open file", fn);
     1332      if (!(*_is)) {
     1333        delete _is;
     1334        throw IoError("Cannot open file", fn);
     1335      }
    13241336    }
    13251337
     
    20952107      : _is(new std::ifstream(fn.c_str())), local_is(true),
    20962108        _filename(fn) {
    2097       if (!(*_is)) throw IoError("Cannot open file", fn);
     2109      if (!(*_is)) {
     2110        delete _is;
     2111        throw IoError("Cannot open file", fn);
     2112      }
    20982113    }
    20992114
     
    21042119      : _is(new std::ifstream(fn)), local_is(true),
    21052120        _filename(fn) {
    2106       if (!(*_is)) throw IoError("Cannot open file", fn);
     2121      if (!(*_is)) {
     2122        delete _is;
     2123        throw IoError("Cannot open file", fn);
     2124      }
    21072125    }
    21082126
     
    23872405    LgfContents(const std::string& fn)
    23882406      : _is(new std::ifstream(fn.c_str())), local_is(true) {
    2389       if (!(*_is)) throw IoError("Cannot open file", fn);
     2407      if (!(*_is)) {
     2408        delete _is;
     2409        throw IoError("Cannot open file", fn);
     2410      }
    23902411    }
    23912412
     
    23962417    LgfContents(const char* fn)
    23972418      : _is(new std::ifstream(fn)), local_is(true) {
    2398       if (!(*_is)) throw IoError("Cannot open file", fn);
     2419      if (!(*_is)) {
     2420        delete _is;
     2421        throw IoError("Cannot open file", fn);
     2422      }
    23992423    }
    24002424
Note: See TracChangeset for help on using the changeset viewer.