2007-10-23 Jeff Johnston <jjohnstn@redhat.com>
* libc/stdlib/wcstombs_r.c: Add SUSV2 support for calculating
        size if output buffer is NULL.
			
			
This commit is contained in:
		@@ -1,3 +1,8 @@
 | 
			
		||||
2007-10-23  Jeff Johnston  <jjohnstn@redhat.com>
 | 
			
		||||
 | 
			
		||||
	* libc/stdlib/wcstombs_r.c: Add SUSV2 support for calculating
 | 
			
		||||
	size if output buffer is NULL.
 | 
			
		||||
 | 
			
		||||
2007-10-17  Jeff Johnston  <jjohnstn@redhat.com>
 | 
			
		||||
 | 
			
		||||
	* libm/mathfp/s_logarithm.c: Fix error introduced by previous
 | 
			
		||||
 
 | 
			
		||||
@@ -14,20 +14,29 @@ _DEFUN (_wcstombs_r, (reent, s, pwcs, n, state),
 | 
			
		||||
  char buff[8];
 | 
			
		||||
  int i, num_to_copy;
 | 
			
		||||
 | 
			
		||||
  while (n > 0)
 | 
			
		||||
  if (s == NULL)
 | 
			
		||||
    {
 | 
			
		||||
      int bytes = _wctomb_r (r, buff, *pwcs, state);
 | 
			
		||||
      if (bytes == -1)
 | 
			
		||||
        return -1;
 | 
			
		||||
      num_to_copy = (n > bytes ? bytes : (int)n);
 | 
			
		||||
      for (i = 0; i < num_to_copy; ++i)
 | 
			
		||||
        *ptr++ = buff[i];
 | 
			
		||||
          
 | 
			
		||||
      if (*pwcs == 0x00)
 | 
			
		||||
        return ptr - s - (n >= bytes);
 | 
			
		||||
      ++pwcs;
 | 
			
		||||
      n -= num_to_copy;
 | 
			
		||||
      size_t num_bytes = 0;
 | 
			
		||||
      while (*pwcs != 0)
 | 
			
		||||
         num_bytes += _wctomb_r (r, buff, *pwcs++, state);
 | 
			
		||||
      return num_bytes;
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      while (n > 0)
 | 
			
		||||
        {
 | 
			
		||||
          int bytes = _wctomb_r (r, buff, *pwcs, state);
 | 
			
		||||
          if (bytes == -1)
 | 
			
		||||
            return -1;
 | 
			
		||||
          num_to_copy = (n > bytes ? bytes : (int)n);
 | 
			
		||||
          for (i = 0; i < num_to_copy; ++i)
 | 
			
		||||
            *ptr++ = buff[i];
 | 
			
		||||
          
 | 
			
		||||
          if (*pwcs == 0x00)
 | 
			
		||||
            return ptr - s - (n >= bytes);
 | 
			
		||||
          ++pwcs;
 | 
			
		||||
          n -= num_to_copy;
 | 
			
		||||
        }
 | 
			
		||||
      return max;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return max;
 | 
			
		||||
} 
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user