~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/field_conv.cc

  • Committer: Mark Atwood
  • Date: 2011-10-21 14:25:19 UTC
  • mfrom: (2440.2.28 rf)
  • Revision ID: me@mark.atwood.name-20111021142519-bqnyqrkthibv70rc
Tags: 2011.10.28
mergeĀ lp:~olafvdspek/drizzle/refactor6

Show diffs side-by-side

added added

removed removed

Lines of Context:
411
411
  int well_formed_error;
412
412
  const charset_info_st * const cs= copy->from_field->charset();
413
413
  const unsigned char *from_end= copy->from_ptr + copy->from_length;
414
 
  uint32_t copy_length= cs->cset->well_formed_len(cs,
415
 
                                              (char*) copy->from_ptr,
416
 
                                              (char*) from_end,
417
 
                                              copy->to_length / cs->mbmaxlen,
418
 
                                              &well_formed_error);
 
414
  uint32_t copy_length= cs->cset->well_formed_len(*cs, str_ref(copy->from_ptr, from_end), copy->to_length / cs->mbmaxlen, &well_formed_error);
419
415
  if (copy->to_length < copy_length)
420
416
    copy_length= copy->to_length;
421
417
  memcpy(copy->to_ptr, copy->from_ptr, copy_length);
481
477
  uint32_t from_length= (uint32_t) *(unsigned char*) copy->from_ptr;
482
478
  const unsigned char *from_ptr= copy->from_ptr + 1;
483
479
  uint32_t to_char_length= (copy->to_length - 1) / cs->mbmaxlen;
484
 
  uint32_t length= cs->cset->well_formed_len(cs, (char*) from_ptr,
485
 
                                         (char*) from_ptr + from_length,
486
 
                                         to_char_length, &well_formed_error);
 
480
  uint32_t length= cs->cset->well_formed_len(*cs, str_ref(from_ptr, from_length), to_char_length, &well_formed_error);
487
481
  if (length < from_length)
488
482
  {
489
483
    if (current_session->count_cuted_fields)
490
484
    {
491
 
      copy->to_field->set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN,
492
 
                                  ER_WARN_DATA_TRUNCATED, 1);
 
485
      copy->to_field->set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
493
486
    }
494
487
  }
495
488
  *copy->to_ptr= (unsigned char) length;
522
515
  uint32_t char_length= (copy->to_length - HA_KEY_BLOB_LENGTH) / cs->mbmaxlen;
523
516
  uint32_t from_length= uint2korr(copy->from_ptr);
524
517
  const unsigned char *from_beg= copy->from_ptr + HA_KEY_BLOB_LENGTH;
525
 
  uint32_t length= cs->cset->well_formed_len(cs, (char*) from_beg,
526
 
                                             (char*) from_beg + from_length,
527
 
                                             char_length, &well_formed_error);
 
518
  uint32_t length= cs->cset->well_formed_len(*cs, str_ref(from_beg, from_length), char_length, &well_formed_error);
528
519
  if (length < from_length)
529
520
  {
530
521
    if (current_session->count_cuted_fields)