- // create a copy of the group on the heap
- group* new_grp = new group(grp); // need a copy constructor for groups
-// aggregate* aggr = (aggregate*)malloc(sizeof(aggregate));
- aggregate* aggr = new aggregate();
- // create an aggregate in preallocated buffer
- aggr = func.create_aggregate(tup, (char*)aggr);
-
- group_table.insert(new_grp, aggr);
+ char aggr_buffer[sizeof(aggregate)];
+ // create an aggregate in preallocated buffer
+ func.create_aggregate(tup, aggr_buffer);
+ // neeed operator= doing a deep copy
+ group_table.insert(grp, (*(aggregate*)aggr_buffer));