UV Perl_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen) { PERL_ARGS_ASSERT_UTF8_TO_UVCHR; return utf8_to_uvchr_buf(s, s + UTF8_MAXBYTES, retlen); }
void Clipboard_close( Handle self) { PClipboardFormatReg text, utf8; if ( var-> openCount <= 0) { var-> openCount = 0; return; } var-> openCount--; if ( var-> openCount > 0) return; text = formats + cfText; utf8 = formats + cfUTF8; /* automatically downgrade UTF8 to TEXT */ if ( utf8-> written && !text-> written) { SV *utf8_sv, *text_sv; if (( utf8_sv = utf8-> server( self, utf8, cefFetch, nilSV))) { STRLEN bytelen, charlen, bytecount; U8 * src; src = ( U8 *) SvPV( utf8_sv, bytelen); bytecount = bytelen; text_sv = newSVpvn("", 0); while ( bytecount > 0) { register UV u = #if PERL_PATCHLEVEL >= 16 utf8_to_uvchr_buf( src, src + bytelen, &charlen) #else utf8_to_uvchr( src, &charlen) #endif ; char c = ( u < 0x7f) ? u : '?'; src += charlen; bytecount -= charlen; sv_catpvn( text_sv, &c, 1); if ( charlen == 0 ) break; } text-> server( self, text, cefFetch, text_sv); sv_free( text_sv); } } apc_clipboard_close( self); }