Ignore:
Timestamp:
Sep 27, 2007, 2:50:47 AM (18 years ago)
Author:
bird
Message:

Fixed termination problem in the append/prepend code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kmk/variable.c

    r1133 r1134  
    14151415         The new value is the unexpanded old and new values. */
    14161416      unsigned int value_len = strlen (value);
    1417       unsigned int new_value_len = value_len + (v->value_length != 0 ? 2 + v->value_length : 1);
     1417      unsigned int new_value_len = value_len + (v->value_length != 0 ? 1 + v->value_length : 0);
    14181418      int done_1st_prepend_copy = 0;
    14191419
    14201420      /* adjust the size. */
    1421       if ((unsigned)v->value_alloc_len <= new_value_len)
     1421      if ((unsigned)v->value_alloc_len <= new_value_len + 1)
    14221422        {
    14231423          v->value_alloc_len *= 2;
    1424           if (v->value_alloc_len < new_value_len)
    1425               v->value_alloc_len = (new_value_len + value_len + 0x7f) + ~0x7fU;
     1424          if (v->value_alloc_len < new_value_len + 1)
     1425              v->value_alloc_len = (new_value_len + 1 + value_len + 0x7f) + ~0x7fU;
    14261426          if (append || !v->value_length)
    14271427            v->value = xrealloc (v->value, v->value_alloc_len);
Note: See TracChangeset for help on using the changeset viewer.