VirtualBox

Changeset 2153 in kBuild


Ignore:
Timestamp:
Dec 29, 2008 12:11:30 AM (16 years ago)
Author:
bird
Message:

kmk: substr fixes

Location:
trunk/src/kmk
Files:
1 added
1 edited

Legend:

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

    r2152 r2153  
    24692469            }
    24702470        }
    2471       length = math_int_from_string (argv[1]);
     2471      length = math_int_from_string (argv[2]);
    24722472      if (length < 0 || (pad != NULL && length > 16*1024*1024 /* 16MB */))
    24732473        fatal (NILF, _("$(substr ): length=%s is out of bounds\n"), argv[3]);
     
    24792479  if (pad == NULL)
    24802480    {
    2481       if (start > str_len)
     2481      if (start > 0)
    24822482        {
    24832483          start--;      /* one-origin */
     
    24982498              start = 0;
    24992499            }
    2500           else if (length == 0)
     2500          else if (length == 0 || start + length > str_len)
    25012501            length = str_len - start;
    25022502        }
     
    25062506  else
    25072507    {
    2508       if (start > str_len)
     2508      if (start > 0)
    25092509        {
    25102510          start--;      /* one-origin */
     
    25202520            {
    25212521              if (start + length <= 0)
    2522                 return o;
     2522                return length ? helper_insert_pad (o, length, pad, pad_len) : o;
    25232523              o = helper_insert_pad (o, -start, pad, pad_len);
    2524               return variable_buffer_output (o, str, length + length);
     2524              return variable_buffer_output (o, str, length + start);
    25252525            }
    25262526          if (length == 0)
     
    25322532        {
    25332533          o = variable_buffer_output (o, str + start, str_len - start);
    2534           o = helper_insert_pad (o, start + length - start, pad, pad_len);
     2534          o = helper_insert_pad (o, start + length - str_len, pad, pad_len);
    25352535        }
    25362536    }
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette