Ignore:
Timestamp:
2011-05-19T12:10:52+12:00 (13 years ago)
Author:
jmt12
Message:

I'd misunderstood where I needed to free the memory allocated to storing char*s in the TDB_DATA. Apparently I only have to free them when they are returned by tdb_fetch() or similar. Removed segfault causing calls to free()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gs2-extensions/tdb-edit/trunk/src/src/tdbset-src/tdbset.cpp

    r24039 r24047  
    7474  int tdb_flags = TDB_DEFAULT; // Default = 0
    7575  int tdb_store_flags = TDB_DEFAULT; // used later when storing
    76   int open_flags = O_RDWR;
     76  int open_flags = O_RDWR | O_CREAT;
    7777  TDB_CONTEXT *tdb = tdb_open(dbname, hash_size, tdb_flags, open_flags, 0664);
    7878  if (!tdb)
     
    123123      }
    124124
     125      // I'm responsible for freeing some memory
    125126      delete [] concat_data;
    126       free(concat_value_data.dptr);
    127127      free(original_value_data.dptr);
    128128    }
     
    144144      cerr << "failed to set [" << argv[2] << "] to '" << argv[3] << "'" << endl;
    145145    }
    146 
    147     free(value_data.dptr);
    148146  }
    149147  // only given a key? that's a deleting
     
    156154  }
    157155
    158   free(key_data.dptr);
    159 
    160156  tdb_close(tdb);
    161157
Note: See TracChangeset for help on using the changeset viewer.