Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 224051
Collapse All | Expand All

(-)pan-0.132.inc/pan/data/parts.cc (-17 / +12 lines)
Lines 303-310 Link Here
303
  this->n_parts_total = n_parts_total;
303
  this->n_parts_total = n_parts_total;
304
  this->n_parts_found = 0; // they haven't been added yet
304
  this->n_parts_found = 0; // they haven't been added yet
305
305
306
  if (n_parts_found > parts.size())
306
  parts.clear();
307
    parts.resize (n_parts_found);
308
}
307
}
309
308
310
void
309
void
Lines 312-332 Link Here
312
                       const StringView  & mid,
311
                       const StringView  & mid,
313
                       bytes_t             bytes)
312
                       bytes_t             bytes)
314
{
313
{
315
  if (n_parts_found >= parts.size())
316
    parts.resize (n_parts_found+1);
317
318
  Part& p = *(&parts.front() + n_parts_found++);
319
  p.number = number;
320
  p.bytes = bytes;
321
314
322
  Packer packer;
315
  Packer packer;
323
  pack_message_id (packer, mid, reference_mid);
316
  pack_message_id (packer, mid, reference_mid);
324
  p.len_used = packer.size ();
317
  Part p(number,bytes,packer.size());
325
  if (p.len_alloced < p.len_used) {
326
    delete [] p.packed_mid;
327
    p.packed_mid = new char [p.len_used];
328
    p.len_alloced = p.len_used;
329
  }
330
  packer.pack (p.packed_mid);
318
  packer.pack (p.packed_mid);
331
  packed_mids_len += p.len_used;
319
  packed_mids_len += p.len_used;
332
320
Lines 337-344 Link Here
337
  assert (mid == tmp);
325
  assert (mid == tmp);
338
#endif
326
#endif
339
327
340
  if (n_parts_total < n_parts_found)
328
  if (n_parts_total < ++n_parts_found)
341
      n_parts_total = n_parts_found;
329
      n_parts_total = n_parts_found;
330
  parts.push_back(p);
342
}
331
}
343
332
344
PartBatch :: Part&
333
PartBatch :: Part&
Lines 346-352 Link Here
346
{
335
{
347
  number =  that.number;
336
  number =  that.number;
348
  bytes =  that.bytes;
337
  bytes =  that.bytes;
349
  len_used = len_alloced = that.len_used;
338
  len_used = that.len_used;
350
  delete [] packed_mid;
339
  delete [] packed_mid;
351
  packed_mid = new char [len_used];
340
  packed_mid = new char [len_used];
352
  memcpy (packed_mid, that.packed_mid, len_used);
341
  memcpy (packed_mid, that.packed_mid, len_used);
Lines 357-367 Link Here
357
  number (that.number),
346
  number (that.number),
358
  bytes (that.bytes),
347
  bytes (that.bytes),
359
  len_used (that.len_used),
348
  len_used (that.len_used),
360
  len_alloced (that.len_used),
361
  packed_mid (new char [len_used])
349
  packed_mid (new char [len_used])
362
{
350
{
363
  memcpy (packed_mid, that.packed_mid, len_used);
351
  memcpy (packed_mid, that.packed_mid, len_used);
364
}
352
}
353
PartBatch :: Part :: Part (number_t n, bytes_t b, size_t l):
354
    number(n),
355
    bytes(b),
356
    len_used(l),
357
    packed_mid(new char [len_used])
358
{
359
}
365
360
366
void
361
void
367
PartBatch :: sort (void)
362
PartBatch :: sort (void)
(-)pan-0.132.inc/pan/data/parts.h (-2 / +2 lines)
Lines 141-150 Link Here
141
        number_t number;
141
        number_t number;
142
        bytes_t bytes;
142
        bytes_t bytes;
143
        size_t len_used;
143
        size_t len_used;
144
        size_t len_alloced;
145
        char * packed_mid;
144
        char * packed_mid;
146
        Part(): number(0), bytes(0),
145
        Part(): number(0), bytes(0),
147
                len_used(0), len_alloced(0), packed_mid(0) {}
146
                len_used(0), packed_mid(0) {}
147
        Part(number_t n, bytes_t b, size_t l);
148
        ~Part() { delete [] packed_mid; }
148
        ~Part() { delete [] packed_mid; }
149
        Part (const Part&);
149
        Part (const Part&);
150
        Part& operator= (const Part&);
150
        Part& operator= (const Part&);

Return to bug 224051