| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.454 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.3.454 |
| Problem: Re-allocating memory slows Vim down. |
| Solution: Use realloc() in ga_grow(). (Dominique Pelle) |
| Files: src/misc2.c |
| |
| |
| |
| |
| |
| *** 2064,2087 **** |
| garray_T *gap; |
| int n; |
| { |
| ! size_t len; |
| char_u *pp; |
| |
| if (gap->ga_maxlen - gap->ga_len < n) |
| { |
| if (n < gap->ga_growsize) |
| n = gap->ga_growsize; |
| ! len = gap->ga_itemsize * (gap->ga_len + n); |
| ! pp = alloc_clear((unsigned)len); |
| if (pp == NULL) |
| return FAIL; |
| gap->ga_maxlen = gap->ga_len + n; |
| - if (gap->ga_data != NULL) |
| - { |
| - mch_memmove(pp, gap->ga_data, |
| - (size_t)(gap->ga_itemsize * gap->ga_len)); |
| - vim_free(gap->ga_data); |
| - } |
| gap->ga_data = pp; |
| } |
| return OK; |
| --- 2064,2085 ---- |
| garray_T *gap; |
| int n; |
| { |
| ! size_t old_len; |
| ! size_t new_len; |
| char_u *pp; |
| |
| if (gap->ga_maxlen - gap->ga_len < n) |
| { |
| if (n < gap->ga_growsize) |
| n = gap->ga_growsize; |
| ! new_len = gap->ga_itemsize * (gap->ga_len + n); |
| ! pp = (gap->ga_data == NULL) |
| ! ? alloc(new_len) : vim_realloc(gap->ga_data, new_len); |
| if (pp == NULL) |
| return FAIL; |
| + old_len = gap->ga_itemsize * gap->ga_maxlen; |
| + vim_memset(pp + old_len, 0, new_len - old_len); |
| gap->ga_maxlen = gap->ga_len + n; |
| gap->ga_data = pp; |
| } |
| return OK; |
| |
| |
| |
| *** 716,717 **** |
| --- 716,719 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 454, |
| /**/ |
| |
| -- |
| From "know your smileys": |
| (X0||) Double hamburger with lettuce and tomato |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ an exciting new programming language -- http://www.Zimbu.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |