diff options
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/sql/field.cc b/sql/field.cc index 49989a4a4ed..dec89e16674 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -1269,12 +1269,15 @@ void Field_num::prepend_zeros(String *value) int diff; if ((diff= (int) (field_length - value->length())) > 0) { - bmove_upp((uchar*) value->ptr()+field_length, - (uchar*) value->ptr()+value->length(), - value->length()); - bfill((uchar*) value->ptr(),diff,'0'); - value->length(field_length); - (void) value->c_ptr_quick(); // Avoid warnings in purify + const bool error= value->realloc(field_length); + if (!error) + { + bmove_upp((uchar*) value->ptr()+field_length, + (uchar*) value->ptr()+value->length(), + value->length()); + bfill((uchar*) value->ptr(),diff,'0'); + value->length(field_length); + } } } |