Diff for /embedaddon/pcre/pcre_ord2utf8.c between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2012/02/21 23:05:51 version 1.1.1.2, 2012/02/21 23:50:25
Line 6 Line 6
 and semantics are as close as possible to those of the Perl 5 language.  and semantics are as close as possible to those of the Perl 5 language.
   
                        Written by Philip Hazel                         Written by Philip Hazel
           Copyright (c) 1997-2008 University of Cambridge           Copyright (c) 1997-2012 University of Cambridge
   
 -----------------------------------------------------------------------------  -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 52  character value into a UTF8 string. */ Line 52  character value into a UTF8 string. */
 *       Convert character value to UTF-8         *  *       Convert character value to UTF-8         *
 *************************************************/  *************************************************/
   
/* This function takes an integer value in the range 0 - 0x7fffffff/* This function takes an integer value in the range 0 - 0x10ffff
and encodes it as a UTF-8 character in 0 to 6 bytes.and encodes it as a UTF-8 character in 1 to 6 pcre_uchars.
   
 Arguments:  Arguments:
   cvalue     the character value    cvalue     the character value
  buffer     pointer to buffer for result - at least 6 bytes long  buffer     pointer to buffer for result - at least 6 pcre_uchars long
   
 Returns:     number of characters placed in the buffer  Returns:     number of characters placed in the buffer
 */  */
   
 int  int
_pcre_ord2utf8(int cvalue, uschar *buffer)PRIV(ord2utf)(pcre_uint32 cvalue, pcre_uchar *buffer)
 {  {
#ifdef SUPPORT_UTF8#ifdef SUPPORT_UTF
 
 register int i, j;  register int i, j;
for (i = 0; i < _pcre_utf8_table1_size; i++)
  if (cvalue <= _pcre_utf8_table1[i]) break;/* Checking invalid cvalue character, encoded as invalid UTF-16 character.
 Should never happen in practice. */
 if ((cvalue & 0xf800) == 0xd800 || cvalue >= 0x110000)
   cvalue = 0xfffe;
 
 for (i = 0; i < PRIV(utf8_table1_size); i++)
   if ((int)cvalue <= PRIV(utf8_table1)[i]) break;
 buffer += i;  buffer += i;
 for (j = i; j > 0; j--)  for (j = i; j > 0; j--)
  {   {
  *buffer-- = 0x80 | (cvalue & 0x3f);   *buffer-- = 0x80 | (cvalue & 0x3f);
  cvalue >>= 6;   cvalue >>= 6;
  }   }
*buffer = _pcre_utf8_table2[i] | cvalue;*buffer = PRIV(utf8_table2)[i] | cvalue;
 return i + 1;  return i + 1;
   
 #else  #else
   
 (void)(cvalue);  /* Keep compiler happy; this function won't ever be */  (void)(cvalue);  /* Keep compiler happy; this function won't ever be */
(void)(buffer);  /* called when SUPPORT_UTF8 is not defined. */(void)(buffer);  /* called when SUPPORT_UTF is not defined. */
 return 0;  return 0;
   
 #endif  #endif
 }  }
   

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>