diff options
Diffstat (limited to 'src/ralloc.c')
| -rw-r--r-- | src/ralloc.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/ralloc.c b/src/ralloc.c index 13587b9ffd4..896ad9f3155 100644 --- a/src/ralloc.c +++ b/src/ralloc.c | |||
| @@ -636,7 +636,8 @@ resize_bloc (bloc_ptr bloc, SIZE size) | |||
| 636 | } | 636 | } |
| 637 | else | 637 | else |
| 638 | { | 638 | { |
| 639 | memmove (b->new_data, b->data, b->size); | 639 | if (b->new_data != b->data) |
| 640 | memmove (b->new_data, b->data, b->size); | ||
| 640 | *b->variable = b->data = b->new_data; | 641 | *b->variable = b->data = b->new_data; |
| 641 | } | 642 | } |
| 642 | } | 643 | } |
| @@ -647,7 +648,8 @@ resize_bloc (bloc_ptr bloc, SIZE size) | |||
| 647 | } | 648 | } |
| 648 | else | 649 | else |
| 649 | { | 650 | { |
| 650 | memmove (bloc->new_data, bloc->data, old_size); | 651 | if (bloc->new_data != bloc->data) |
| 652 | memmove (bloc->new_data, bloc->data, old_size); | ||
| 651 | memset ((char *) bloc->new_data + old_size, 0, size - old_size); | 653 | memset ((char *) bloc->new_data + old_size, 0, size - old_size); |
| 652 | *bloc->variable = bloc->data = bloc->new_data; | 654 | *bloc->variable = bloc->data = bloc->new_data; |
| 653 | } | 655 | } |
| @@ -663,7 +665,8 @@ resize_bloc (bloc_ptr bloc, SIZE size) | |||
| 663 | } | 665 | } |
| 664 | else | 666 | else |
| 665 | { | 667 | { |
| 666 | memmove (b->new_data, b->data, b->size); | 668 | if (b->new_data != b->data) |
| 669 | memmove (b->new_data, b->data, b->size); | ||
| 667 | *b->variable = b->data = b->new_data; | 670 | *b->variable = b->data = b->new_data; |
| 668 | } | 671 | } |
| 669 | } | 672 | } |
| @@ -816,7 +819,8 @@ r_alloc_sbrk (long int size) | |||
| 816 | header. */ | 819 | header. */ |
| 817 | for (b = last_bloc; b != NIL_BLOC; b = b->prev) | 820 | for (b = last_bloc; b != NIL_BLOC; b = b->prev) |
| 818 | { | 821 | { |
| 819 | memmove (b->new_data, b->data, b->size); | 822 | if (b->new_data != b->data) |
| 823 | memmove (b->new_data, b->data, b->size); | ||
| 820 | *b->variable = b->data = b->new_data; | 824 | *b->variable = b->data = b->new_data; |
| 821 | } | 825 | } |
| 822 | 826 | ||
| @@ -862,7 +866,8 @@ r_alloc_sbrk (long int size) | |||
| 862 | 866 | ||
| 863 | for (b = first_bloc; b != NIL_BLOC; b = b->next) | 867 | for (b = first_bloc; b != NIL_BLOC; b = b->next) |
| 864 | { | 868 | { |
| 865 | memmove (b->new_data, b->data, b->size); | 869 | if (b->new_data != b->data) |
| 870 | memmove (b->new_data, b->data, b->size); | ||
| 866 | *b->variable = b->data = b->new_data; | 871 | *b->variable = b->data = b->new_data; |
| 867 | } | 872 | } |
| 868 | } | 873 | } |